Home > Database > Mysql Tutorial > Introduction to the solution to the problem of Chinese garbled characters in MySQL under Ubuntu

Introduction to the solution to the problem of Chinese garbled characters in MySQL under Ubuntu

黄舟
Release: 2017-03-29 13:43:52
Original
1206 people have browsed it

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
Copy after login
Chinese cannot be inserted into the MySQL database~!

View database encoding

Modify the database encoding

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)
Copy after login

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)
Copy after login

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
Copy after login

Add some information to the corresponding node of the my.cnf file:

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
[mysql]
default-character-set=utf8
Copy after login

Then restart MySQL:

/etc/init.d/mysql start
Copy after login

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)
Copy after login

It would be great if this was the case. Things are not always as simple as imagined:

Found out when restarting the MySQL service It has been in a waiting state

(PS: Guess a deadlock or something has occurred). At this time, if you execute:

mysql -u root -p
Copy after login

, an exception will be thrown:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Copy after login

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
Copy after login

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

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Solution Method.
Answer:

default-character-set=utf8'

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

because

show create database bangjob;shows that the previously created data encoding is still latin1Summarize

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!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template