MySQL插入数据,莫名其妙的乱码

接触数据库比较少,对数据库很多特性并不是很了解,所以就在数据库上用了很多的时间,比较头疼的就是数据库的中文乱码问题了,关于建表和建库过程中指定utf8这样的操作,是很正常的在网上也可以轻松找到相关的资料或者教程。我这个要说的是一个比较奇葩的情况。

这里先看下几个重要的点,在mysql命令行中show variables like ‘character%’;

全部UTF8没有任何问题,在看这里

两个表的数据类型都是varchar字符集都是utf8没问题,但是就是一个可以正常中文,另外一个一直都是乱码。在这就得说,问题还是得找根本,我想了多种方法去解决,统统没有效果,最后实在没有效果,只能到处建表sql,这里就发现问题了。

— —————————-
DROP TABLE IF EXISTS `testcode`;
CREATE TABLE `testcode` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`remote_id` int(11) NOT NULL,
`type` varchar(255) NOT NULL,
PRIMARY KEY (`remote_id`,`id`),
KEY `id` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

— —————————-
— Table structure for testobject
— —————————-
DROP TABLE IF EXISTS `testobject`;
CREATE TABLE `testobject` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`obj_id` int(11) NOT NULL,
`remote_id` int(11) NOT NULL,
`object` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
`type` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
`model` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
`standard` float DEFAULT NULL,
PRIMARY KEY (`id`,`obj_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

这里看到有CHARACTER SET latin1这样的字样,但是在管理软件里统统是看不到这个的,只能在sql里看到。找到问题了就好解决,只需要删除CHARACTER SET latin1,然后再drop table,接着create就行。这个问题所示解决了。这个问题产生的原因应该就是在建表的过程中,没有指定utf8 ,后边改的utf8.造成数据类型的不统一才造成的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注