MYSQL插入中文数据出现的字符错误(MySQl ERROR 1366: 1366: Incorrect string value:X)

错误:

在修改数据表中文数据时时出现错误的字符值

分析:字段的编码方式与控制台的中文编码方式不同

可以看到 需要中文的中文字段中的 collation 属性值为 latin1,而中文字符一般采用utf8或者gbk.

 

这数据库客户端采用utf8编码,再次采用修改字段编码为utf8

alter table patient change `过敏药物` `过敏药物` longtext character set utf8;

如此将需要使用到中文的字段都设置编码utf8

问题解决。

单个修改字段编码的方式太慢,在数据库设计伊始就应该注意编码问题。对需要使用到中文的表更改表的编码方式,或对数据库的编码方式修改


create table patient
(
   jz_num              char(10) not null,
   name                 longtext,
   gender               smallint,
   ID                   longtext,
   birth                date,
   过敏药物                 longtext,
   联系电话                 longtext,
   primary key (jz_num)
) default character set = 'utf8'; //创建表时设置编码方式

alter table patient comment '病人信息表';


//修改数据库编码方式
alter database 数据库名 character set utf8

 

 

补充:

一些关于查看和修改字符集的MySQL知识:

查看mysql的字符集:show variables where Variable_name like '%char%';

查看某一个数据库字符集:show create database 数据库名;

查看某一个数据表字符集:show create table 表名;

查看字段编码:SHOW FULL COLUMNS FROM 表名;

修改mysql字符集:(修改在数据库重启后失效)

              mysql> set character_set_client=utf8;

              mysql> set character_set_connection=utf8;

              mysql> set character_set_database=utf8;

              mysql> set character_set_results=utf8;

              mysql> set character_set_server=utf8;

              mysql> set character_set_system=utf8;

              mysql> set collation_connection=utf8;

              mysql> set collation_database=utf8;

              mysql> set collation_server=utf8;

修改MySQL字符集默认:

      复制mysql安装根目录下的my_default.ini,命名为my.ini,修改


[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

重启mysql后生效

net stop mysql

net start mysql

 

 

 

参考:https://blog.csdn.net/weixin_43054397/article/details/90906630

           https://www.cnblogs.com/showcase/p/12095725.html

Guess you like

Origin blog.csdn.net/weixin_53022668/article/details/117655168