ForMySQL中文garbled problem(mine is Ubuntu System), I read a lot of solutions on the Internet, and made many detours during the process, so I thought about writing an article based on my own solution to share with friends in need, so this article mainly introduces how to solve Ubuntu Download the relevant information on the MySQL Chinese garbled code problem. Friends who need it can refer to it. When using
to insert data in conjunction with MySQL data, I encountered the following problem: /usr/local/lib/python2.7/dist-packages/Django-1.11.dev20170117002028-py2.7.egg
/django/db/backends/mysql/base.py:109: Warning: Incorrect string value: '\xE6\x88\x90\xE5\x8A\x9F...'
for column 'json' at row 1
return self.cursor.execute(query, args)
[07/Feb/2017 12:15:21] "GET /index/ HTTP/1.1" 200 250
Chinese cannot be inserted into the MySQL database~!
View database encoding mysql> show create database bangjob;
+----------+--------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------+
| bangjob | CREATE DATABASE `bangjob` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show variables like'%char%';
+--------------------------+----------------------------+
| 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)
mysql> set character_set_database=utf8; Query OK, 0 rows affected (0.00 sec) mysql> set character_set_server=utf8; Query OK, 0 rows affected (0.00 sec)
View the modified results
mysql> show variables like'%char%'; +--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
If you continue to insert at this time, there will be no problem No problem.
It would be great if it was so simple, because the author's settings will become invalid after restarting MySQL!Continue to look for others! Method
sudo gedit /etc/mysql/my.cnf
[client] default-character-set=utf8 [mysqld] default-character-set=utf8 [mysql] default-character-set=utf8
Then restart MySQL:
/etc/init.d/mysql start
If it can be restarted, then check the database code again: mysql> show variables like "%char%";
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
(PS: Guess a deadlock or something has occurred). At this time, if you execute:
mysql -u root -p
, an exception will be thrown:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
I just want to change the encoding, why is it so hard->->->->->!!!I tried it when I solved this problem Many methods (restart, recovery). . .
sudo /etc/init.d/mysql status
Check the status of mysql: mysql respawn/post-start) process 55665 These methods cannot solve the problem, let’s start with the log...
Find the file /var/log/mysql/error.log
Continue to search
Solution Method.
Answer:
under
[ mysqld ] is changed to
character_set_server=utf8 Okay, you can finally restart MySQL, and the encoding set after the restart will still take effect.
Of course the previously created database needs to be re-created T_T
becauseshow create database bangjob;shows that the previously created data encoding is still latin1
Summarize
The above is the detailed content of Introduction to the solution to the problem of Chinese garbled characters in MySQL under Ubuntu. For more information, please follow other related articles on the PHP Chinese website!