MYSQL数据库保存拼音失败处理

2019-01-11  本文已影响0人  zero_8a32

问题描述:在数据库保存拼音时数据库提示主键冲突,具体如下:要保存的信息为fèn,fēn;但保存了fēn之后数据库提示冲突;

原因分析:fèn,fēn在数据库中被认为是同一字符,导致主键冲突保存失败;

解决:大家在创建数据库或者表格的时候指定charset=utf8,数据库就能识别所有的字符,结果往往不是如此;mysql使用charset指定字符,如何存储却依靠另一个参数--collation--来指定排序规则。这个collation正是mysql是否区分大小写,是否区分声调字符的关键。每个charset有一个默认的collation。utf-8默认的为utf8-general-ci,ci表示case insensitive,即不区分大小写。如果需要区分,可以指定charset=utf8 collation=utf8_bin。

建表DEMO;

CREATE TABLE `t_wrod_voice` (

  `word_id` int(10) NOT NULL COMMENT '字库ID',

  `voice` varchar(64) NOT NULL COMMENT '发音',

  `voice_file` varchar(64) DEFAULT NULL COMMENT '音频文件',

  PRIMARY KEY (`word_id`,`voice`)

) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='字库发音表';

改表DEMO;

ALTER TABLE T_WORD_VOICE CONVERT TO CHARACTER SET utf8 COLLATE=utf8_bin ;

上一篇下一篇

猜你喜欢

热点阅读