Mysql插入中文时提示:ERROR 1366 (HY000): Incorrect string value: ‘\xE5\x8F\xB0\xE5\xBC\x8F…

原因:插入字段时提示错误:

mysql> insert into 学生表 values (“张三丰”,”武当山”),(“章司封”,”二郎山”);
ERROR 1366 (HY000): Incorrect string value: ‘\xE5\xBC\xA0\xE4\xB8\x89…’ for column ‘姓名’ at row 1

分析:

mysql> show create table 学生表 ;
| Table | Create Table |
| 学生表 | CREATE TABLE `学生表` (
`姓名` char(20) CHARACTER SET latin1 DEFAULT NULL,
`家庭地址` char(100) CHARACTER SET latin1 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

1 row in set (0.01 sec)
可以看到,虽然表的编码改了,但是字段的编码没有更改,因此字段也需要更改
(1)更改 姓名 字段
mysql> alter table 学生表 change 姓名 姓名 char(20) character set utf8;
Query OK, 0 rows affected (0.52 sec)
Records: 0 Duplicates: 0 Warnings: 0
(2)更改 家庭地址 字段
mysql> alter table 学生表 change 家庭地址 家庭地址 char(100) character set utf8;
Query OK, 0 rows affected (0.34 sec)
Records: 0 Duplicates: 0 Warnings: 0
(3)确认字段编码类型
mysql> show create table 学生表 ;

| Table | Create Table |

| 学生表 | CREATE TABLE `学生表` (
`姓名` char(20) DEFAULT NULL,
`家庭地址` char(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

1 row in set (0.00 sec)
(4)重新插入字段,提示完成
mysql> insert into 学生表 values (“张三丰”,”武当山”),(“章司封”,”二郎山”);
Query OK, 2 rows affected (0.04 sec)
Records: 2 Duplicates: 0 Warnings: 0
(5)查看插入数据
mysql> select * from 学生表;
+———–+————–+
| 姓名 | 家庭地址 |
+———–+————–+
| 张三丰 | 武当山 |
| 章司封 | 二郎山 |
+———–+————–+
2 rows in set (0.00 sec)
(6)总结
1)修改表的编码方式:
ALTER TABLE `test` DEFAULT CHARACTER SET utf8;
该命令用于将表test的编码方式改为utf8;
2)修改字段的编码方式:
ALTER TABLE `test` CHANGE `name` `name` char(40) CHARACTER SET utf8 NOT NULL;
该命令用于将表test中name字段的编码方式改为utf8
3) 查看字段的编码方式:
show create table `name`;

此条目发表在mysql分类目录,贴了标签。将固定链接加入收藏夹。

发表回复

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