MySQL的。无法将俄语字符插入到VARCHAR类型的列中(45)

时间:2017-05-08 20:11:48

标签: mysql character-encoding mysql-workbench

尝试在MySQL(Workbench)中执行此行时遇到问题:

INSERT INTO classification (`Type`, `Subtype`) VALUES ("тип", "подтип");

我试图为表classification设置不同的字符集:cp1251,utf-8,utf8mb4,cp1251_bin。

这是一个包含我在我的数据库中找到的所有字符集的表,也许它会对你有所帮助:

enter image description here

UPD。我找到了解决方案。但是,我不得不更改我的表,所以现在表risk是一个已编辑的表classificationSHOW 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 个答案:

答案 0 :(得分:1)

表格的CHARACTER SET是表格中列的默认。请提供SHOW CREATE TABLE,以便我们验证列的设置。

客户端中字节的编码是什么? cp1251utf8不同;俄语utf8mb4 == utf8

事情以什么方式糟糕?根据症状,请参阅this,了解有关其他可能设置错误的具体提示。

也许是您对NVARCHAR的更改强制CHARACTER SET utf8列?