【问题标题】:Insert ampersand into MySQL在 MySQL 中插入 & 符号
【发布时间】:2013-10-02 02:06:55
【问题描述】:

这是我的问题here的延伸。

在为我链接的问题收集更多信息的简单测试中,我尝试通过 phpMyAdmin 界面将 & 字符插入到我的数据库中...

INSERT INTO `my_db`.`some_table` (`id`, `version`, `value`) VALUES (NULL, '0', '&');

...但插入的是 HTML 等效的 &。

我的数据库排序规则是utf8_bin,我要插入的表是utf8_general_ci,而我尝试插入与号的字段是varchar 类型。

我必须怎么做才能将原始 & 字符 & 插入到我的 MySQL 数据库中?

更新:

我不知道 phpMyAdmin 的问题是什么,但我想我发现了我的应用程序的问题。似乎 Hibernate 只是没有使用正确的字符集进行连接。我已经指定了一个自定义 MySQL 方言,所以我只是覆盖了getTableTypeString 方法,如下所示,我的应用程序现在可以正确地将值插入 MySQL:

class CustomMySQL5InnoDBDialect extends MySQL5InnoDBDialect {   
    @Override
    public String getTableTypeString() {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8"
    }
}

【问题讨论】:

  • 这可能是 phpMyAdmin 的 Web 界面为您搞砸了。您是否尝试过直接在 MySQL 中或通过某种程序语言运行此查询?
  • 我只尝试通过 phpMyAdmin 和我的 Grails 应用程序创建的连接运行查询。两者都产生相同的结果。我会尝试使用 MySQL Workbench。
  • @FreshPrinceOfSO 您链接到的问题是询问存储&符号的最佳方式是什么。显然,该问题的 OP 知道如何以& 或& 格式存储与号。我的问题是,当我尝试存储原始 & 字符 & 时,为什么要存储 HTML 格式。
  • 我刚试过这个,我正在运行 phpMyAdmin 4.0.1-rc1。它工作正常,它不会将 & 转换为 &我也在 MySQL 命令行客户端中测试过,效果一样。

标签: mysql phpmyadmin


【解决方案1】:

你可以试试:

INSERT INTO `my_db`.`some_table` (`id`, `version`, `value`) VALUES (NULL, '0', _utf8'&');

【讨论】:

    【解决方案2】:

    我不知道 phpMyAdmin 的问题是什么,但我想我发现了我的应用程序的问题。似乎 Hibernate 只是没有使用正确的字符集进行连接。我已经指定了一个自定义 MySQL 方言,所以我只是覆盖了 getTableTypeString 方法,如下所示,我的应用程序现在可以正确地将值插入 MySQL:

    类 CustomMySQL5InnoDBDialect 扩展 MySQL5InnoDBDialect {
    @Override 公共字符串 getTableTypeString() { 返回“引擎=InnoDB 默认字符集=utf8” } }

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2013-10-27
      相关资源
      最近更新 更多