【问题标题】:How to connect wordpress database with JAVA ? (mysql)如何用 JAVA 连接 wordpress 数据库? (mysql)
【发布时间】:2014-05-24 13:53:03
【问题描述】:

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

提前致谢。

代码如下:

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

【问题讨论】:

  • 这个例子还远远没有完成(getDataSource(...)的返回在哪里??),还有什么问题?请让我们知道错误,日志...
  • 谢谢,我编辑了我的问题。请再看一遍
  • 你是不是把MY_REMOTE_DESKTOP_IP换成真实的IP了吧?
  • 当然可以,例如“217.23.23.44”
  • 嗯很难说... db 起来了吗?端口是标准端口吗?再次检查用户和密码,尝试简化代码,使用调试,如果 db 在你的机器上,使用 127.0.0.1...

标签: java mysql database wordpress


【解决方案1】:

要检查两件事:

  1. 您确定您的 mysql 服务器配置为监听 MY_REMOTE_DESKTOP_IP 吗?
  2. 您确定您的防火墙 (iptable...) 允许连接 tpc 端口 3306 上的 MY_REMOTE_DESKTOP_IP 吗?

【讨论】:

  • 感谢您的回答,我的防火墙已完全关闭,如果我在 mysql 中使用remotedesktop ip 创建数据库,我可以连接它,但过程非常缓慢,我检查了它。例如。如果我将 wp-config localhost 更改为 remote_ip,它也会减慢进程。我只想连接到我的remote_desktop_localhost,就像任何写“www.example.com”并用wordpress连接我的数据库的人一样。
  • 堆栈跟踪清楚地表明连接失败,因为 jdbc 客户端无法访问服务器。
  • 谢谢,是的,我知道我可以看到,我的问题是关于访问服务器:)
猜你喜欢
  • 2020-12-16
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多