【发布时间】: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