2017-05-08 6 views
-1

나는 MySQL을 (워크 벤치)이 라인을 실행하려고 문제가 : cp1251, utf-8, utf8mb4, cp1251_bin. MySQL. 나는 테이블 <code>classification</code>에 대해 서로 다른 문자 집합을 설정하기 위해 노력했다</p> <pre><code>INSERT INTO classification (`Type`, `Subtype`) VALUES ("тип", "подтип"); </code></pre> <p>: 유형 VARCHAR과 열에 러시아어 문자를 삽입 할 수 없습니다 (45)

내가 발견 한 내 데이터베이스에있는 모든 캐릭터 세트와 테이블, 어쩌면 당신을 도울 것입니다 :

enter image description here

UPD를. 해결책을 찾았습니다. 그러나 테이블을 변경해야 했으므로 테이블 risk은 편집 된 테이블 classification입니다. SHOW CREATE TABLE risk의 결과는 다음과 같습니다

'CREATE TABLE `risk` (
    `IdRisk` int(11) NOT NULL AUTO_INCREMENT, 
    `IdSubtype` int(11) DEFAULT NULL, 
    `Content` varchar(4000) CHARACTER SET utf8 DEFAULT NULL, 
    PRIMARY KEY (`IdRisk`), 
    KEY `FK_subtype_risk_idx` (`IdSubtype`), 
    CONSTRAINT `FK_subtype_risk` FOREIGN KEY (`IdSubtype`) REFERENCES `subtype` (`IdSubtype`) ON DELETE SET NULL ON UPDATE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=latin1' 

이 문제에 대한 해결책을 찾을 수 없습니다. 누군가가 그 해결책을 알고 있기를 바랍니다.

감사합니다!

+1

varchar 대신 nvarchar를 사용할 수 있습니까? 또는 나는 심지어 텍스트가 그것을 할 것이라고 생각한다. –

+0

nvarchar 유형으로 작동하는 것처럼 보입니다! 너무 많이. –

+0

당신은 오신 것을 환영합니다. –

답변

1

테이블의 CHARACTER SET은 표의 열에 대해 기본값 인입니다. 열의 설정을 확인할 수 있도록 SHOW CREATE TABLE을 제공해주세요.

클라이언트의 바이트 인코딩은 무엇입니까? cp1251utf8과 다릅니다. utf8mb4 == utf8 (러시아어)

어떤 점에서 문제가 있습니까? 증상에 따라 이외의에 대한 특정 팁은 this을 참조하십시오.

축에 CHARACTER SET utf8을 강제하는 것이 아마도 NVARCHAR으로 변경 되었습니까?

+0

네, 맞습니다! 'NVARCHAR'은 자동적으로 column에 대해 set-expression'CHARACTER SET utf8'을 생성합니다. 나는'show create table' 결과를 추가하여 내 질문을 편집했습니다. 체크 아웃하십시오. –

+0

나는 당신에게 또 하나의 질문이있다. 테이블을보기 위해'utf8' 인코딩을 사용하여'html-form'에서 문자열을 가져와야한다면, html-page에 대한 charset을 설정하지 않고 괜찮습니까? 아니면 그것을 바꿔야합니까? –

+0

'NVARCHAR'와 관련된 버그 신고서를 제출했습니다 : https://bugs.mysql.com/bug.php?id=86233 –