2014-05-24 68 views
1

我不知道多少关于连接过程中,我试图连接wordpress数据库而不创建新的数据库与mysql中的my remotedesktop IP。通常我可以连接本地主机,我可以连接到使用remote ip创建的数据库。在我的服务器mydatabase host name/Ip adresslocalhost,正如我所说我不知道​​url请求,wp-config文件和mysql之间的整个连接。我想我发送urlwp-config的请求,它连接到我的localhost。无论如何,我想连接到我的remotedesktop的本地主机与JAVA但我不能。让我用代码解释。希望我能解释一下自己。如何使用JAVA连接wordpress数据库? (mysql)

在此先感谢。

这里是代码:

的wp-config.php文件

define('DB_NAME', 'mydbname'); 

define('DB_USER', 'mydbuser'); 

define('DB_PASSWORD', 'mydbpass'); 

define('DB_HOST', '127.0.0.1'); 

我的连接代码:

public class Dt_page { 
    public static DataSource getDataSource(int server) { 

    String database_driver = null; 
    String database_adres = null; 
    String dbuser = null; 
    String dbpass = null; 

    ConnectionFactory connectionFactory; 
    switch (server) { 

     case 1://profile server 
      database_driver = "com.mysql.jdbc.Driver"; 
      database_adres = "jdbc:mysql://MY_REMOTE_DESKTOP_IP:3306/?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true"; 
      dbuser = "mydbuser"; 
      dbpass = "mydbpass"; 
    } 

    try { 
     Class.forName(database_driver); 
    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(Dt_page.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    Properties props = new Properties(); 
    props.put("user", dbuser); 
    props.put("password", dbpass); 
    props.put("autoReconnect", "true"); 
    props.put("autoReconnectForPools", "true"); 

    props.put("validationQuery", "SELECT 1 from dual;"); 
    props.put("testWhileIdle","true"); 

    connectionFactory = new DriverManagerConnectionFactory(database_adres, props); 

    GenericObjectPool connectionPool = new GenericObjectPool(null, 12, GenericObjectPool.WHEN_EXHAUSTED_GROW, 60*30, 12,true,true); 
    GenericKeyedObjectPoolFactory keyedObjectPoolFactory = new GenericKeyedObjectPoolFactory(null); 


    PoolableConnectionFactory poolableConnectionFactory = 
      new PoolableConnectionFactory(connectionFactory, 
      connectionPool, 
      keyedObjectPoolFactory, 
      "select 1", 
      30, 
      null, 
      false, 
       true);          

    PoolingDataSource dataSource = new PoolingDataSource(connectionPool);    
    return dataSource; 

和SQL

QueryRunner qr; 
    qr = new QueryRunner(Dt_page.getDataSource(1));  
    try { 
     List<Object[]> v = qr.query("Select meta_value from mydbname.wp_favorite", new ArrayListHandler()); 
     System.out.println(v.size()); 
     for (Object[] objects : v) { 
      for (Object object : objects) { 
       System.out.println(object); 
      } 
     } 
    } 
    catch (Exception ex){ 
     ex.printStackTrace();   
    } 
} 
} 

错误日志:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.Util.getInstance(Util.java:386) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1014) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) 
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2367) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2288) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
at java.sql.DriverManager.getConnection(DriverManager.java:571) 
at java.sql.DriverManager.getConnection(DriverManager.java:187) 
at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:78) 
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1188) 
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) 
at org.apache.commons.dbutils.AbstractQueryRunner.prepareConnection(AbstractQueryRunner.java:175) 
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:304) 
at tazedizi.TazeDizi.main(TazeDizi.java:29) 
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:355) 
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2461) 
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2306) 
... 19 more 
    Caused by: java.net.ConnectException: Connection refused: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
at java.net.Socket.connect(Socket.java:579) 
at java.net.Socket.connect(Socket.java:528) 
at java.net.Socket.<init>(Socket.java:425) 
at java.net.Socket.<init>(Socket.java:241) 
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305) 
... 21 more 
+0

这个例子远不是完整的(getDataSource(...)??)的返回值),还有什么问题?请让我们知道错误,日志... – Paolof76

+0

谢谢你,我编辑了我的问题。请再看看 – fthopkins

+0

是否用真正的IP替换MY_REMOTE_DESKTOP_IP? – Paolof76

回答

0

两件事情来检查:

  1. 你确定你的MySQL服务器可配置到listend上MY_REMOTE_DESKTOP_IP?
  2. 您确定您的防火墙(iptable ...)允许在tpc端口3306上的MY_REMOTE_DESKTOP_IP上连接吗?
+0

谢谢你的回答我的firelwall完全关闭了,如果我在mysql中用'remotedesktop ip'创建数据库,我可以连接它,但是这个过程非常缓慢,我检查了它。为前。如果我把我的wp-config'localhost'改为'remote_ip',它也会减慢这个过程。我只想连接到我的'remote_desktop_localhost',就像编写“www.example.com”的任何人一样,并使用wordpress连接我的数据库。 – fthopkins

+0

堆栈跟踪清楚地表明连接失败,因为jdbc客户端无法访问服务器。 – JEY

+0

谢谢,是的,我知道我可以看到,我的问题是关于访问服务器:) – fthopkins