mysql 中文字段报错_mysql 插入中文字段报错 "Incorrect string value: '\\xE6\\xB5\\x8B\\xE8\\xAF\\x95...' for colu......

1. 查看一个 database 或一个 table 的编码

show create database mytestdb;

show create table testapp_article;

mysql> show create table testapp_article;

+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table |

+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| testapp_article | CREATE TABLE `testapp_article` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(100) NOT NULL,

`content` longtext,

`author` varchar(20) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

2. 创建 table 的时候就使用 utf8 编码

在每次创建表的时候都在最后加上 character set = utf8 即可:

如:

create table test_table (

id int auto_increment,

title text,

content text,

posted_on datetime,

primary key (id)

) character set = utf8;

3. 修改已有 table 的编码

使用默认编码创建的 table 是不能支持中文的,这时候使用如下语句对表testapp_article进行修改:

mysql> alter table testapp_article convert to character set utf8;

Query OK, 0 rows affected (0.18 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> show create table testapp_article;

+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table |

+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| testapp_article | CREATE TABLE `testapp_article` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(100) NOT NULL,

`content` longtext,

`author` varchar(20) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

此后再往此 table 插入中文时,就可以正常存储和读取了,但之前插入的中文的乱码还是不能纠正,只是对新插入的数据没有问题。

4. 修改mysql的配置文件,让 mysql 默认编码为utf8

在/etc/mysql/mysql.conf.d/mysqld.cnf里面的[mysqld]下面添加如下行:

[mysqld]

character-set-server=utf8

5 重启服务:

sudo /etc/init.d/mysql restart

如果没有错,再创建数据库或者表的时候默认编码应该就是 utf8 了。

参照:https://blog.csdn.net/paullinjie/article/details/80312863

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值