Maison > base de données > tutoriel mysql > Introduction à la solution au problème des caractères chinois tronqués dans MySQL sous Ubuntu

Introduction à la solution au problème des caractères chinois tronqués dans MySQL sous Ubuntu

黄舟
Libérer: 2017-03-29 13:43:52
original
1205 Les gens l'ont consulté

Pour MySQLchinoisproblème de code tronqué (le mien est Ubuntu System), j'ai lu beaucoup de solutions sur Internet et fait de nombreux détours au cours du processus, j'ai donc pensé à écrire un article basé sur ma propre solution à partager avec des amis dans le besoin, donc cet article présente principalement comment résoudre le téléchargement d'Ubuntu les informations pertinentes sur le problème MySQL chinois tronqué. Les amis qui en ont besoin peuvent s'y référer

Découvrez le problème

J'ai étudié Django récemment lors de l'utilisation de pour insérer des données en conjonction avec des données MySQL, j'ai rencontré le problème suivant :

/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
Copier après la connexion
Le chinois ne peut pas être inséré dans l'encodage de la base de données MySQL~ ~ ! 🎜>

Modifier l'encodage de la base de données

mysql> show create database bangjob;
+----------+--------------------------------------------------------------------+
| Database | Create Database    |
+----------+--------------------------------------------------------------------+
| bangjob | CREATE DATABASE `bangjob` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)
Copier après la connexion
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)
Copier après la connexion

Afficher les résultats modifiés

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)
Copier après la connexion

Il n'y aura aucun problème pour continuer à insérer pour le moment

Ce serait formidable si les paramètres de l'auteur comme celui-ci sont invalides après le redémarrage de MySQL 🎜>
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)
Copier après la connexion

Continuez à chercher ! pour les autres méthodes

Ajoutez les informations dans le nœud correspondant du fichier my.cnf :

Puis redémarrez MySQL :

sudo gedit /etc/mysql/my.cnf
Copier après la connexion

Si vous pouvez redémarrer, vérifiez à nouveau l'encodage de la base de données :

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
[mysql]
default-character-set=utf8
Copier après la connexion

Ce serait formidable si cela est vrai. Les choses ne sont pas toujours aussi simples qu'on l'imagine :
/etc/init.d/mysql start
Copier après la connexion

<🎜. >

Lorsque j'ai redémarré le service MySQL, j'ai constaté qu'il était dans l'état d'attente
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)
Copier après la connexion

(PS : je suppose qu'un blocage ou quelque chose s'est produit à ce moment-là, exécutez : <🎜). >
va

lancer une exception

 :

mysql -u root -p
Copier après la connexion
Je veux juste modifier l'encodage, pourquoi est-ce si difficile->->- > ;->->!!!

J'ai essayé de nombreuses méthodes (redémarrer, restaurer .Vérifiez l'état de mysql :

ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/var/run/mysqld/mysqld.sock&#39; (2)
Copier après la connexion
.

Ces méthodes ne peuvent pas résoudre le problème, commençons par le journal...

sudo /etc/init.d/mysql status
Copier après la connexion

Trouvez le fichier /var/log/mysql/error.logmysql respawn/post-start, (post-start) process 55665


Continuez à trouver la solution pour


Réponse :

[ mysqld ] Suivant

est modifié. à

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

Eh bien, MySQL peut enfin être redémarré, et l'encodage défini après le redémarrage prendra toujours effet

Bien sûr, la base de données précédemment créée doit être recréée. T_T

Parce que

l'encodage des données créé avant l'affichage est toujours latin1default-character-set=utf8' character_set_server=utf8

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal