ubuntu中mysql不能插入中文数据

前言

    今天在做数据库的操作的时候,发现中文数据不能插入到数据库中,查阅资料后,终于是解决.

一.问题

    在插入中文数据时出现了下面的错误:

ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\x80\xE5\x8F\x91...' for column 'caption' at row 1

二.解决方法

    首先在mysql终端中输入:

mysql> show variables like 'character%';

    回车执行:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

    对于这个表中的Value="latin1"的数据,就是阻碍我们插入中文的数据,接下来就解决这个问题.
    在ubuntu下,我们要修改两个文件:

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

    在里面添加:

character-set-server = utf8
[mysqld]
#
# * Basic Settings
#
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
lc-messages-dir	= /usr/share/mysql

#secure_file_priv= ''
skip-external-locking
character-set-server = utf8			# 添加到这里

    还有一个文件需要修改:

sudo gedit /etc/mysql/conf.d/mysql.cnf

    在里面添加:

[mysql]
default-character-set = utf8

    修改完成后重启mysql:

sudo service mysql restart

    然后再次进入mysql,插入数据.
    但是我们会发现,还是插入不了中文数据,还是会报和上面同样的错误.究其原因,是因为我们插入数据的那个表是在原来的状态下创建的,编码格式并不是"utf-8",所以需要将原来的数据表删除,重新建一张,然后再次插入数据,这样就可以插入中文数据了.

写在最后

    本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.

你可能感兴趣的:(ubuntu中mysql不能插入中文数据)