問題を見つける 最近 Django を学習しているのですが、MySQL データと組み合わせてデータを挿入するときに次の問題が発生しました。 /usr/local/lib/python2.7/dist-packages/Django-1.11.dev20170117002028-py2.7.egg/django/db/backends/mysql/base.py:109: 警告: 行 1 の列 'json' の文字列値 '\xE6\x88\x90\xE5\x8A\x9F...' が正しくありません self.cursor.execute(クエリ、引数) を返します。 [2017/02/07 12:15:21] 「GET /index/ HTTP/1.1」 200 250 中国語はMySQLデータベースに挿入できません〜! ~! データベースのエンコーディングを表示 mysql> show データベース bangjob を作成します。 +----------+--------------------------------------------------------------------+ | データベース | データベースの作成 | +----------+--------------------------------------------------------------------+ | bangjob | CREATE DATABASE `bangjob` /*!40100 デフォルト文字セット latin1 */ | +----------+--------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) mysql> '%char%' のような変数を表示します。 +--------------------------+----------------------------+ | 変数名 | 値 | +--------------------------+----------------------------+ | 文字セットクライアント | utf8 | | 文字セット接続 | utf8 | | 文字セットデータベース | latin1 | | 文字セットファイルシステム | バイナリ | | 文字セット結果 | utf8 | | 文字セットサーバー | latin1 | | 文字セットシステム | utf8 | | 文字セットディレクトリ | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ セット内の行数は 8 です (0.00 秒) データベースのエンコーディングを変更する mysql> character_set_database=utf8 を設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> character_set_server=utf8 を設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) 変更された結果を表示する mysql> '%char%' のような変数を表示します。 +--------------------------+----------------------------+ | 変数名 | 値 | +--------------------------+----------------------------+ | 文字セットクライアント | utf8 | | 文字セット接続 | utf8 | | 文字セットデータベース | utf8 | | 文字セットファイルシステム | バイナリ | | 文字セット結果 | utf8 | | 文字セットサーバー | utf8 | | 文字セットシステム | utf8 | | 文字セットディレクトリ | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ セット内の行数は 8 です (0.00 秒) 現時点では挿入を続行しても問題ありません。 MySQL を再起動すると、このような変更は無効になるため、それほど単純であれば良いでしょう。 ! ! 他の方法を探し続ける sudo gedit /etc/mysql/my.cnf my.cnf ファイル内の対応するノードに次の情報を追加します。 [クライアント] デフォルトの文字セット=utf8 [mysqld] デフォルトの文字セット=utf8 [mysql] デフォルトの文字セット=utf8 次に、MySQL を再起動します。 /etc/init.d/mysql を起動します 再起動できる場合は、データベースのエンコーディングを再度確認してください。 mysql> 「%char%」のような変数を表示します。 +--------------------------+----------------------------+ | 変数名 | 値 | +--------------------------+----------------------------+ | 文字セットクライアント | utf8 | | 文字セット接続 | utf8 | | 文字セットデータベース | utf8 | | 文字セットファイルシステム | バイナリ | | 文字セット結果 | utf8 | | 文字セットサーバー | utf8 | | 文字セットシステム | utf8 | | 文字セットディレクトリ | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ セット内の行数は 8 行 (0.01 秒) 本当にこうだったらいいのですが、物事は私たちが想像するほど単純ではありません。 MySQL サービスを再起動すると、常に待機状態になっていることがわかりました (追記: デッドロックか何かが発生したと思われます)。このとき、以下を実行します。 mysql -u ルート -p 例外がスローされます: エラー 2002 (HY000): ソケット '/var/run/mysqld/mysqld.sock' 経由でローカル MySQL サーバーに接続できません (2) コードを変更したいだけなのに、なぜこんなに難しいのでしょうか? この問題を解決するためにさまざまな方法(再起動、復元)を試しました。 。 。 。 。 sudo /etc/init.d/mysql ステータス mysql のステータスを確認します: これらの方法では問題を解決できないので、ログから始めましょう... ログファイル/var/log/mysql/error.logを見つけます。 答え: [mysqld] これで、ようやく MySQL を再起動できます。再起動後も設定したエンコーディングは有効になります。 もちろん、以前作成したデータベースを再作成する必要がありますT_T 要約する 上記がこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションを取ることができます。 以下もご興味があるかもしれません:
|
<<: nginx ロードバランシングを介して https にリダイレクトする方法
MySQL ウィンドウ関数の紹介MySQL は MySQL 8.0 以降、ウィンドウ関数をサポートし...
複数の注文を含むリストが必要です。各注文は一意にすることも、複数の注文を結合することもできます。各注...
まとめ:以下のように、CSS で指定した行にマウスを置いたときに行全体の色を変更する方法を示します。...
前回の記事では、MySQL の置換関数 (Replace) とセグメンテーション関数 (SubStr...
1. 制限の基本的な実装一般的に、クライアントは、pageNo (ページ番号) と pageSize...
JS、CSSについてCS: ...上部のスタイルシートCSS式を避ける外部JS、CSSの使用JSと...
目次作成機能配列プロトタイプの削減Array.prototype.reduceRightパイプ関数作...
vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...
概要この記事は、centos7.3 上で mysql5.3.6 を自動的にコンパイルしてインストール...
まず Linux に ssh をインストールします。例として Centos を使用します。ポータル:...
遅いログクエリ機能スロー ログ クエリの主な機能は、設定された時間しきい値を超える SQL ステート...
概要: 2 つの MySQL SQL ステートメント ロックの分析次のSQL文にどのようなロックが追...
例示するフロントエンド開発では、セルの幅を制限し、コンテンツが制限を超える部分に省略記号を表示する必...
会議中に同僚から開発ライブラリを書き込めないとの報告を受けました。エラー メッセージは次のとおりでし...
参考までに、vueを使用してクリックフリップエフェクトを簡単に実装します。具体的な内容は次のとおりで...