MySQL - "SHOW VARIABLES LIKE '%version%'"在我的 Java 应用程序中不起作用



当我在MySQL命令行控制台中运行SHOW VARIABLES LIKE '%version%'时,它运行得很好,但当我在我正在处理的Java应用程序中运行相同的代码时,它会产生以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知"字段列表"中的"VARIABLES"列

这是我的Java代码:

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);
}

ConnectionHelper只是一个类,它创建并设置与作为参数传递给setDatabaseName()方法的任何数据库的连接。

我甚至尝试过不设置任何数据库,因为查询在MySQL命令行控制台中运行,即使没有选择任何数据库,但仍然会产生相同的错误。

求你了,我真的需要帮助。

您可以使用INFORMATION_SCHEMAGLOBAL_VARIABLESSESSION_VARIABLES表,如下所示:

SELECT * 
FROM information_schema.global_variables 
WHERE variable_name LIKE '%version%';

样本输出:

|VARIABLE_NAME|VARIABLE_VALUE||-------------------------|--------------------------------------||INNODB_VERSION | 5.5.32||协议版本|10||VERSION_COMMENT|MySQL Community Server(GPL)by Remi||版本|5.5.32||版本_COMPILEMACHINE | x86_64||VERSION_COMPILE_OS|Linux||SLAVE_TYPE_CONVERSIONS||

这是SQL Fiddle演示。


更新(基于您的评论)

您可以使用IN子句指定所需的所有变量名

SELECT * 
FROM information_schema.global_variables 
WHERE variable_name IN ('version', 'hostname', 'port');

样本输出:

|VARIABLE_NAME|VARIABLE_VALUE||---------------|----------------||版本|5.5.32||主机名|db2||PORT|3306|

这是SQLFiddle演示。

如果您只想要DB版本:,您可以尝试运行它

SELECT VERSION();

我在本地测试了这个

sql = "SELECT VERSION() AS version";
rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString("version"));
}

结果:5.6.13


您也可以选择任何MYSQL变量,如下所示:

SELECT @@version AS version;

您在我的机器上的原始查询结果是:

'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
.....

最新更新