错误:
在修改数据表中文数据时时出现错误的字符值
分析:字段的编码方式与控制台的中文编码方式不同
可以看到 需要中文的中文字段中的 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