今天在做数据库的操作的时候,发现中文数据不能插入到数据库中,查阅资料后,终于是解决.
在插入中文数据时出现了下面的错误:
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",所以需要将原来的数据表删除,重新建一张,然后再次插入数据,这样就可以插入中文数据了.
本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.