Ani*_*quo 3 java mysql exception
请问我有以下问题,当我在mysql命令行控制台中运行SHOW VARIABLES LIKE'%version%'时它运行得非常好,但是当我在java应用程序中运行相同的代码时,我正在处理它会产生以下错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:'字段列表'中的未知列'VARIABLES'
ConnectionHelper.setDatabaseName('information_schema');
Statement statement = ConnectionHelper.getStatement();
ResultSet = statement.executeQuery ("SHOW VARIABLES LIKE '%version%'");
String serverVersion = null;
while (resultSet.next()){
serverVersion = resultSet.getString(3);
}
Run Code Online (Sandbox Code Playgroud)
ConnectionHelper只是一个类,它创建并建立与作为参数传递给setDatabaseName()方法的任何数据库的连接.我甚至尝试过不设置任何数据库,因为查询在mysql命令行控制台中运行,即使没有选择任何数据库,但仍会产生相同的错误.我真的需要帮助.
您可以使用INFORMATION_SCHEMA GLOBAL_VARIABLES和(或)这样的SESSION_VARIABLES表
SELECT *
FROM information_schema.global_variables
WHERE variable_name like '%version%';
Run Code Online (Sandbox Code Playgroud)
样本输出:
| VARIABLE_NAME | VARIABLE_VALUE | |-------------------------|--------------------------------------| | INNODB_VERSION | 5.5.32 | | PROTOCOL_VERSION | 10 | | VERSION_COMMENT | MySQL Community Server (GPL) by Remi | | VERSION | 5.5.32 | | VERSION_COMPILE_MACHINE | x86_64 | | VERSION_COMPILE_OS | Linux | | SLAVE_TYPE_CONVERSIONS | |
这是SQLFiddle演示
更新(根据您的意见).您可以使用IN子句指定所需的所有变量名称
SELECT *
FROM information_schema.global_variables
WHERE variable_name IN('version', 'hostname', 'port');
Run Code Online (Sandbox Code Playgroud)
样本输出:
| VARIABLE_NAME | VARIABLE_VALUE | |---------------|----------------| | VERSION | 5.5.32 | | HOSTNAME | db2 | | PORT | 3306 |
这是SQLFiddle演示
如果您只需要数据库版本,可以尝试运行它:
SELECT VERSION();
Run Code Online (Sandbox Code Playgroud)
我在本地测试了这个
sql = "SELECT VERSION() AS version";
rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString("version"));
}
Run Code Online (Sandbox Code Playgroud)
结果: 5.6.13
您还可以像这样选择任何 MYSQL 变量:
SELECT @@version AS version;
Run Code Online (Sandbox Code Playgroud)
你在我机器上的原始查询结果是:
Run Code Online (Sandbox Code Playgroud)'innodb_version','5.6.13' 'protocol_version','10' 'slave_type_conversions','' 'version','5.6.13' 'version_comment','Source distribution' 'version_compile_machine','x86_64' 'version_compile_os','osx10.8'
所以你可以像这样一个一个地选择每个全局变量:
SELECT @@version as version,
@@innodb_version as innodb_version,
@@verision_compile_os as version_compile_os
@@protocol_version as protocol_version
@@version_compile_machine as version_compile_machine
.....
Run Code Online (Sandbox Code Playgroud)