mysql无法插入中文

有的时候我们建完表之后,在程序中进行插入时,如果有中文字符的话,有时会报出类似Incorrect string value: '\xE9\x92\xB1\xE9\xA6\xA8' for column 'create_user'的错误,这个原因想必大家都知道是字符集的问题,可是有的时候即使调整了该数据库的字符集为UTF-8后也无法进行插入,仍然报该错误。
其实这个是因为建表顺序的问题,比如

  1. 你先建立了数据库(比如字符集忘记设置了,为Latin1)
  2. 然后建立了一张学生表,里面有name字段
  3. 然后进行插入,当姓名为"张三"的时候会报上述错误
  4. 这时你意识到是字符集的问题,然后将数据库的字符集通过alter database 数据库名 character set utf8;改为了UTF-8
  5. 你以为大功告成了,再次插入不料还是报错
    其实这个是什么问题呢,是你修改完数据库的字符集之后,之前建立的表并不会刷新字符集,所以你得从第四步之后建新表才可以成功应用上UTF-8,或者字段少的话你也可以不用建新表,直接把字段的字符集改为UTF-8也可以,不过我一般都重新建表

所以最好大家养成一个好习惯,在创建数据库的时候就设定它的字符集为utf8mb4,这样,以后在数据库中建表的时候就会应用上该字符集了
修改数据库的字符集:
alter database 数据库名default character set utf8mb4;
alter database 数据库名 default collate utf8mb4_unicode_ci;
或者使用一句话搞定:alter database 数据库名 default character set utf8mb4 COLLATE utf8mb4_general_ci;
修改表的字符集:
ALTER TABLE 表名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改列的字符集:
ALTER TABLE 表名 modify 列名 字段类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值