6

Bluehost で Django を使用しています。ユーザー生成入力用のフォームを作成しましたが、このフォームからの Unicode 入力は、文字の保存または表示に失敗します。そのため、データベースの照合と文字セットを変更する必要があるというSOとGoogle検索を行いました。私はこのSQLを実行します

ALTER DATABASE learncon_pywithyou CHARACTER SET utf8 COLLATE utf8_unicode_ci;

からpython27 manage.py dbshell、mysql シェルを開始しました。画面に表示されるのは Query OK, 1 row affected (0.00 sec)です。

したがって、問題は解決したと思いますが、実際にはそうではありません。Bluehost が提供する phpMyAdmin で後で見つけたので、この SQL は何もしていません。すべてのテーブルのすべての Varchar フィールドは、まだlantin1_swedish_ci照合されています。

したがって、alter table代わりに動作するはずです。これをmysqlで実行します alter table mytable character set utf8 collate utf8_unicode_ci;

画面には が表示されますがQuery OK. 4 rows affected、実際には何もしませんでした。これらのフィールドの照合mytableはまったく変更されませんでした。

したがって、最終的にphpMyAdminのフィールドを手動で変更するmytableと、これが機能し、ユニコードを使用してこのテーブルに挿入できるようになり、正しく表示されるようになりましたが、そのようなテーブルが約20あり、1つずつ変更したくありません手動で 1 つ。

各フィールドの Collat​​e を変更して正しいユニコードを保存および表示する簡単で効果的な方法はありますか?

4

2 に答える 2

4

@StuartLCに加えて、20 個のテーブルすべてを変更する場合、クエリの下で文字セットと照合を使用します。ここでは、データベース名は世界です

SELECT 
CONCAT("ALTER TABLE ",TABLE_SCHEMA , ".",TABLE_NAME," CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci") AS AlterSQL
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = "world";

上記ALTERにより、実行する必要があるすべてのクエリが準備されます。

于 2014-01-25T18:09:58.437 に答える