2013-09-30 2 views
0

이것은 내 질문 here의 확장입니다. 내가 phpMyAdmin을 인터페이스를 통해 내 데이터베이스에 앰퍼샌드 문자를 삽입하는 시도에 내가 링크 된 질문에 대한 더 많은 정보를 수집 할 수있는 간단한 테스트에서 MySQL에 앰퍼샌드 삽입

...

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

...하지만 삽입됩니다 것입니다 HTML과 동등한 &.

데이터베이스 정렬은 utf8_general_ci이고 삽입 할 테이블은 varchar입니다.

원시 앰퍼샌드 문자 &을 내 MySQL 데이터베이스에 삽입하려면 어떻게해야합니까?

업데이트 :

내가 phpMyAdmin을 가진 문제가 무엇인지 모르겠지만, 나는 내 응용 프로그램의 문제를 발견 한 것 같아요. Hibernate가 연결에 올바른 문자 집합을 사용하지 않는 것 같습니다. '

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

중복 가능성 http://stackoverflow.com/questions/11704233/the-best- way-to-store-ampersand-in-mysql-database) – Kermit

+0

이것은 phpMyAdmin messing의 웹 인터페이스의 경우 일 수 있습니다 너를 위해서. MySQL 내에서 또는 일부 프로그램 언어를 통해이 쿼리를 직접 실행 해 보았습니까? –

+0

필자는 phpMyAdmin과 Grails 애플리케이션에 의해 생성 된 연결을 통해 쿼리를 실행 해 보았습니다. 둘 다 동일한 결과를 산출합니다. MySQL Workbench를 사용해 보겠습니다. – ubiquibacon

답변

0

당신이 시도 할 수 : 난 이미 난 그냥 아래와 내 응용 프로그램이 제대로 MySQL의에 값을 삽입으로 getTableTypeString 방법을 오버라이드 사용자 정의 MySQL의 사투리가 너무 지정했다 phpMyAdmin의 문제점은 무엇인지 알고 있지만 내 응용 프로그램에서 문제가 발견 된 것 같습니다. Hibernate가 연결에 올바른 문자 집합을 사용하지 않는 것 같습니다. 이미 난 그냥 아래와 내 응용 프로그램이 제대로 MySQL의에 값을 삽입으로 getTableTypeString 방법을 오버라이드 사용자 정의 MySQL의 사투리가 너무 지정했다 :

클래스 CustomMySQL5InnoDBDialect이 MySQL5InnoDBDialect {
@Override 공공 문자열 getTableTypeString를 확장() { 반환 "ENGINE = 이노 DEFAULT 문자셋 = UTF8" }} 저장하는 최선의 방법 및 MySQL 데이터베이스에 (앰퍼샌드) (의

0

내가 돈 :

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