注册

使用MyCat连接池无法完成查询

青扬 2024/04/12 472 3

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM8:1-3-26-2023.07.26-197096-20046-ENT
mycat:1.6.7
mysql-connect-java.jar:5.1.49
DmJdbcDriver18.jar:8.1.1.193
【操作系统】:
【CPU】:
【问题描述】*:

使用官网例子的jdbc连不上,认证报错(java.sql.SQLException: 第 1 行, 第 105 列[.]附近出现错误: )
2024-04-09 16:12:50,780 [DEBUG][$_NIOREACTOR-1-RW] bindConnection Connection@152052230 [id=17] for node=perf1, sql=/* mysql-connector-java-5.1.49 ( Revision: ad86f36e100e104cd926c6b81c8cab9565750116 ) */SELECT @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS character_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@collation_server AS collation_server, @@collation_connection AS collation_connection, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allowed_packet AS max_allowed_packet, @@net_buffer_length AS net_buffer_length, @@net_write_timeout AS net_write_timeout, @@performance_schema AS performance_schema, @@query_cache_size AS query_cache_size, @@query_cache_type AS query_cache_type, @@sql_mode AS sql_mode, @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@tx_isolation AS transaction_isolation, @@wait_timeout AS wait_timeout (io.mycat.server.NonBlockingSession:NonBlockingSession.java:467)
2024-04-09 16:12:50,785 [WARN ][BusinessExecutor1] execute sql err : errno:63529 第 1 行, 第 105 列[.]附近出现错误:

如果使用5.1.35的mysql驱动,则mycat一直没有返回值,rs一直卡住

下为示例源码:

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class mytest {
    static String jdbcString = "com.mysql.jdbc.Driver";
    // 定义 DM URL 连接串
    static String urlString = "jdbc:mysql://192.168.100.39:8066/pcm";
    // 定义连接用户名
    static String userName = "pcm";
    // 定义连接用户口令
    static String password = "Pcm_1Q#";
    // 定义连接对象
    static Connection conn = null;
    // 定义 SQL 语句执行对象
    static Statement state = null;
    // 定义结果集对象
    static ResultSet rs = null;
    public static void main(String[] args) {
        try {
            //1.加载 JDBC 驱动程序
            System.out.println("Loading JDBC Driver...");
            Class.forName(jdbcString);
            //2.连接 DM 数据库
            System.out.println("Connecting to DM Server...");
            conn = DriverManager.getConnection(urlString, userName, password);
            //3.通过连接对象创建 java.sql.Statement 对象
            state = conn.createStatement();
//--------------------------------------------------------------------------------------------------
            //基础操作:此处操作对应的数据库,为示例库中的 PRODUCTION 模式中的 PRODUCT_CATEGORY 表
            //增加
            //定义增加的 SQL--这里由于此表中的结构为主键,自增,只需插入 name 列的值
            String sql_insert = "insert into PRODUCTION.PRODUCT_CATEGORY (id,name)values(1,'小说'),"+
                    "(2,'文学'),(3,'计算机'),(4,'英语'),(5,'管理'),(6,'少儿'),(7,'金融')";
            //执行添加的 SQL 语句
            //state.executeUpdate(sql_insert);
            //删除
            //定义删除的 SQL 语句
            String sql_delete = "delete from PRODUCTION.PRODUCT_CATEGORY where name = '厨艺'";
            //执行删除的 SQL 语句
            //state.execute(sql_delete);
            //修改
            String sql_update = "update PRODUCTION.PRODUCT_CATEGORY set name = '国学' where name = '文学'";
           // state.executeUpdate(sql_update);
            //查询表中数据
            //定义查询 SQL
            //String sql_selectAll = "select * from PRODUCTION.PRODUCT_CATEGORY";
            String sql_selectAll="select * from iptpa_agent_host_cpu";
            //执行查询的 SQL 语句
            rs = state.executeQuery(sql_selectAll);
            displayResultSet(rs);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                //关闭资源
                rs.close();
                state.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    //显示结果集
    public static void displayResultSet(ResultSet rs) throws SQLException{
        while (rs.next()) {
            int i=1;
            Object id = rs.getObject(i++);
            Object name = rs.getObject(i++);
            System.out.println(id+"  "+name);
        }
    }
}

以下是配置文件:
配置文件.zip

回答 0
暂无回答
扫一扫
联系客服