为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【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
你PRODUCTION.PRODUCT_CATEGORY表id是自增列吗,自增列不用插入值