mysql插入中文字符失败修改字段字符集为utf-8插入中文正常

mysql插入中文字符失败

ERROR 1366 (22007): Incorrect string value: \
'\xE6\x9D\x8E' for column `poetry_db`.`author`.`name` at row 1

更改database的charset

alter database dbname default character set 'utf8';修改database的charset

$ show create database poetry_db;
+-----------+----------------------------------------------------------------------+
| Database  | Create Database                                                      |
+-----------+----------------------------------------------------------------------+
| poetry_db | CREATE DATABASE `poetry_db` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+-----------+----------------------------------------------------------------------+
$ alter database poetry_db default character set 'utf8';
$ show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |

发现以下

| character_set_database   | utf8                       |

还是插入报错

更改table的charset

alter table tbname default character set 'utf8';修改table的charset

$ show create table author;
+--------+----+
| Table  | Create Table|
+--------+-----+
| author | CREATE TABLE `author` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1 |

$ alter table author default character set 'utf8'; 

$ show create table author;
+--------+----+
| Table  | Create Table|
+--------+-----+
| author | CREATE TABLE `author` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(16) CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 |

还是插入报错

更改表字段的charset

用```alter table tbname change fieldname fieldname xxx character set utf8 xxx;``修改字段`

$ alter table author change name name varchar(16) character set utf8 default null;
$ insert into author(name) values("李");
Query OK, 1 row affected (0.063 sec)

终于插入中文字符正常了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值