2013-09-30 58 views
0

这是我的问题here的扩展。将&字符插入MySQL

在一个简单的测试,收集了我挂我试图插入一个符号字符到通过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" 
    } 
} 
+0

可能的重复[在MySQL数据库中存储&(Ampersand)的最佳方式](http://stackoverflow.com/questions/11704233/the-best- way-to-store-ampersand-in-mysql-database) – Kermit

+0

这可能是phpMyAdmin的web界面的一个例子这为你。您是否尝试过直接在MySQL中或通过某种程序语言运行此查询? –

+0

我只尝试通过phpMyAdmin和我的Grails应用程序创建的连接来运行查询。两者都产生相同的结果。我会尝试使用MySQL Workbench。 – ubiquibacon

回答

0

你可以尝试使用:

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

我不不知道phpMyAdmin存在什么问题,但我认为我的应用程序发现了问题。看起来Hibernate只是没有使用正确的连接字符集。我已经有一个自定义的MySQL方言指定的,所以我只是推翻了getTableTypeString方法,如下图所示,我的应用程序现在将值插入MySQL的正确:

类CustomMySQL5InnoDBDialect扩展MySQL5InnoDBDialect {
@覆盖 公共字符串getTableTypeString(){ 回报“ENGINE = InnoDB DEFAULT CHARSET = utf8” } }