MariaDB JDBC对包含大括号的列名称进行了阻塞

时间:2018-06-15 12:08:26

标签: java jdbc mariadb

我需要运行一个非常简单的SQL查询

SELECT `id`, `{Document id}` FROM `test`.`test` LIMIT 10;

其中{Document id}是列名。每当我通过MariaDB JDBC运行它时,它都会失败,并显示错误unknown escape sequence。根据我的理解,{CALL ...}用于使用JDBC CallableStatement调用存储过程。

我如何逃脱它?我希望JDBC将它视为文字字符串而没有特殊含义。 \对我不起作用。

如@a_horse_with_no_name删除的答案中所述,有setEscapeProcessing。但是很多连接器都不支持它(例如MariaDB)。

1 个答案:

答案 0 :(得分:1)

我已使用mariadb-java-client-2.2.5确认了此问题。这不是mysql-connector-java-5.1.44的问题所以你可能想要report this issue to MariaDB

根据@JoopEggen在上面的评论中提出的建议,我通过将sessionVariables=sql_mode=ANSI_QUOTES添加到连接字符串并使用

来使用MariaDB JDBC。
ResultSet rs = st.executeQuery("SELECT \"{Document id}\" FROM test.test");