翼度科技»论坛 编程开发 mysql 查看内容

关于Mysql插入中文字符报错ERROR 1366(HY000)的解决方法

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
问题


  • 加载含有中文字符的数据到表中出错
  1. mysql> CREATE TABLE food(
  2.     ->   id INT(10) PRIMARY KEY AUTO_INCREMENT NOT NULL,
  3.     ->   NAME VARCHAR(20) NOT NULL,
  4.     ->   company VARCHAR(30) NOT NULL,
  5.     ->   price FLOAT,
  6.     ->   produce_time YEAR,
  7.     ->   validity_time INT(4),
  8.     ->   address VARCHAR(50)
  9.     -> );
  10. Query OK, 0 rows affected (0.07 sec)
复制代码
  1. mysql>  INSERT INTO food(id,NAME,company,price,produce_time,validity_time,address) VALUES(4,'FF咖啡','FF咖啡厂',20,2002,5,'天津');
  2. ERROR 1366 (HY000): Incorrect string value: '\xE5\x92\x96\xE5\x95\xA1' for column 'NAME' at row 1
复制代码
原因


  • mysql默认编码latin1是不支持中文字符的,所以报错。



解决


  • 通过设置编码字符为utf8,从而支持中文字符。

1、查看当前库默认编码格式
  1. mysql> show variables like '%char%';
  2. +--------------------------------------+----------------------------+
  3. | Variable_name                        | Value                      |
  4. +--------------------------------------+----------------------------+
  5. | character_set_client                 | utf8                       |
  6. | character_set_connection             | utf8                       |
  7. | character_set_database               | latin1                     |
  8. | character_set_filesystem             | binary                     |
  9. | character_set_results                | utf8                       |
  10. | character_set_server                 | latin1                     |
  11. | character_set_system                 | utf8                       |
  12. | character_sets_dir                   | /usr/share/mysql/charsets/ |
  13. | validate_password_special_char_count | 1                          |
  14. +--------------------------------------+----------------------------+
  15. 9 rows in set (0.00 sec)
复制代码
2、将character_set_database和character_set_server设置为utf8
  1. mysql> set character_set_database=utf8;
  2. Query OK, 0 rows affected, 1 warning (0.02 sec)
  3. mysql> set character_set_server=utf8;
  4. Query OK, 0 rows affected (0.00 sec)
复制代码
3、删除数据库并新建数据库,并切到该数据库下


  • 因为只有在编码格式改变以后,再建库才会生效。
  1. drop database student;
  2. create database student;
  3. use student;
复制代码


验证

建表、添加数据
  1. mysql> create table Student(
  2.     -> Sno int not null auto_increment primary key,
  3.     -> Sname varchar(10) not null,
  4.     -> Sex char(1) not null,
  5.     -> Sage tinyint(100) not null,
  6.     -> Sdept char(4) not null)comment = '学生表';
  7. Query OK, 0 rows affected (0.03 sec)
复制代码
  1. mysql> insert into Student values ( 1,'李勇', '男', 20, 'CS');
  2. Query OK, 1 row affected (0.02 sec)
复制代码
ok,成功解决

总结

如果某表中需要添加中文字符时需要在其库之前将
  1. character_set_database和character_set_server
复制代码
设置为utf8
  1. set character_set_database=utf8;
  2. set character_set_server=utf8;
复制代码
然后再建库,建表插入中文字符数据
到此这篇关于关于Mysql插入中文字符报错ERROR 1366(HY000)的解决方法的文章就介绍到这了,更多相关Mysql中文字符报错ERROR1366内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/database/2914824b4.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具