Ubuntu에서 MySQL의 중국어 왜곡 문자 문제에 대한 솔루션 소개

黄舟
풀어 주다: 2017-03-29 13:43:52
원래의
1146명이 탐색했습니다.

MySQL중국어잘못된 코드 문제(저는 Ubuntu입니다) System), 인터넷에서 많은 솔루션을 읽고 그 과정에서 많은 우회를 했기 때문에 필요한 친구들과 공유하기 위해 나만의 솔루션을 기반으로 기사를 작성하려고 생각했기 때문에 이 기사에서는 Ubuntu 다운로드 해결 방법을 주로 소개합니다. MySQL 중국어 왜곡 코드 문제 관련 정보가 필요하신 분들은

문제 발견

Django 최근에 MySQL 데이터와 함께 데이터 삽입을 사용할 때 다음과 같은 문제가 발생했습니다.

/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
로그인 후 복사

MySQL 데이터베이스에 중국어를 삽입할 수 없습니다~! 🎜>

데이터베이스 인코딩 보기

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)
로그인 후 복사
수정된 결과 보기

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)
로그인 후 복사
이때 계속 삽입하면 작동하지 않습니다.

작성자가 이렇게 변경했는데 MySQL을 다시 시작한 후 설정이 실패하면 좋을 것 같습니다! 🎜>
계속해서 다른 항목을 찾습니다.

sudo gedit /etc/mysql/my.cnf
로그인 후 복사

my.cnf 파일의 해당 노드에 정보를 추가합니다.

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
[mysql]
default-character-set=utf8
로그인 후 복사
그런 다음 MySQL을 다시 시작합니다.
/etc/init.d/mysql start
로그인 후 복사

다시 시작할 수 있으면 데이터베이스 인코딩을 다시 확인하세요.

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)
로그인 후 복사

이런 경우라면 좋을 것 같습니다.

MySQL 서비스를 다시 시작할 때 발견되었습니다. 대기 상태였습니다(PS: 교착 상태 또는 문제가 발생한 것으로 추측). 이때 다음을 실행하면:

mysql -u root -p
로그인 후 복사

, 예외는 발생합니다 :

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
로그인 후 복사
인코딩을 변경하고 싶은데 왜 이렇게 어려운가요->->- >->->!!!이 문제를 해결하면서 시도해 봤습니다. 방법(재시작, 복구)이 많습니다...
sudo /etc/init.d/mysql status
로그인 후 복사

mysql 상태 확인:

이러한 방법으로는 문제를 해결할 수 없습니다. 로그부터 시작하겠습니다... >

mysql respawn/post-start, (post-start) process 55665/var/log/mysql/error.log 파일을 찾으세요


계속해서

에 대한 솔루션을 찾으세요.

답변:

[ mysqld ] 변경 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)에서

드디어 MySQL을 다시 시작할 수 있으며 다시 시작한 후에도 설정된 인코딩이 계속 적용됩니다.

물론 이전에 생성된 데이터베이스를 다시 생성해야 합니다 T_T

default-character-set=utf8' character_set_server=utf8

이전에 생성된 데이터의 인코딩이 여전히 latin1

요약


위 내용은 Ubuntu에서 MySQL의 중국어 왜곡 문자 문제에 대한 솔루션 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!