【问题标题】:Ignore/use MSSQL identifier brackets from MSSQL at Maria DB 10.3Mariadb 10.3 中的 MSSQL 忽略/使用 MYSQL 标识符括号
【发布时间】:2019-10-25 18:12:45
【问题描述】:

我们将用于原生 Windows 应用程序的数据库引擎从 MSSQL 切换到 MariaDB。不幸的是,应用程序中有(只有一个)错误查询,如下所示:

SELECT EXAMPLE FROM MY_CATALOG WHERE [EXAMPLEID]='123456';

它会引发语法错误,因为“EXAMPLEID”周围的 [ ] 括号在这里不是有效的 SQL。

正如我所见,MariaDB 10.4 将实现一个接受这些括号的 MSSQL 模式。但是是否有任何可能性/选项可以在 MariaDB 10.3 服务器端忽略此查询以使我们的应用程序正常工作?顺便说一句,我们无法访问应用程序本身的源代码...

有什么想法吗? :)

最好的问候

【问题讨论】:

  • 即使您可以找到忽略错误的方法,如果此查询失败,您的应用程序逻辑是否正确?另请注意,一般来说,从 SQL Server 到 MariaDB 的过程中可能会出现更多问题。最好的长期修复是更新您的源代码。
  • 是的,其他一切都按预期工作。只有这个查询。问题是,完整的交易因此而失败。我们不需要此查询的功能。它可能导致 null,但根本没有 SQL 语法错误。
  • SQL Server 使用括号; MariaDB 没有。去掉括号。
  • @RickJames 不可能...请再次阅读我的问题
  • 向 MariaDB 提交错误报告。

标签: sql mariadb


【解决方案1】:

在 MariaDB 10.4(将在未来几天内成为 GA)中,您可以通过将 SQL 模式设置为 MSSQL 来做到这一点。

mysql> set sql_mode="MSSQL";
Query OK, 0 rows affected (0.00 sec)

mysql> create table t1 (a int);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t1 values (1);
Query OK, 1 row affected (0.02 sec)

mysql> select * from t1 where [a]=1;
+------+
| a    |
+------+
|    1 |
+------+
1 row in set (0.01 sec)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2018-07-19
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多