【问题标题】:MySQL interpreting special characters in generated queryMySQL解释生成查询中的特殊字符
【发布时间】:2010-06-23 04:42:30
【问题描述】:

我正在尝试使用 MySql.data.dll 将我们框架的数据库层从 SQLServer 迁移到 MySQL。我在 MySQL 中有以下生成的查询:

select * from `user` where `user_domainname` = 'domain\beth';

MySQL 将上述字符串中的 '\b' 解释为响铃字符,而 SqlServer 不解释任何此类转义字符。 MySQL 中的解决方案 -

select * from `user` where `user_domainname` = 'domain\\beth';

要在 C# 中执行此操作,我必须用 \b 替换每个 \b 或其他此类字符,考虑到我最终要进行的此类转换的数量,这对我来说不是一个非常可行的选择。

所以我的问题是 - MySQL 中是否有任何选项可以避免它在数据库级别解释此类特殊字符。如果不是,我可以使用什么 api 来执行这样的转换。我确实检查了 MySqlHelper 类,但在那里找不到任何有用的东西。

提前致谢,
巴拉特

【问题讨论】:

    标签: c# .net mysql mysql-management


    【解决方案1】:

    从 MySQL 5.0.1 开始,您可以设置 NO_BACKSLASH_ESCAPES 将反斜杠转换为另一个普通字符。但请确保您永远不要依赖其他地方的反斜杠!

    要在实时服务器上执行此操作(直到它重新启动):

    SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';
    

    不要忘记将它添加到你的 MySQL 配置文件(my.cnf 或 my.ini)中,以便下次启动时生效!添加行

    sql-mode=NO_BACKSLASH_ESCAPE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 2013-12-15
      • 2016-08-29
      • 2011-05-30
      相关资源
      最近更新 更多