MySQLテーブルにデータを挿入しようとしたり、外部データをMySQLデータベースにインポートしようとしたりすると、「文字列値が正しくありません」というエラーが発生する場合があります。この記事では、MySQLで誤った文字列値を修正する方法を見ていきます。
MySQLで誤った文字列値を修正する方法
これは、UTF8エンコーディングまたは文字セットを持たないMySQLテーブルに値を挿入しようとした場合の一般的なエラーです。
1。デフォルトの文字セットを確認する
MySQLにログインし、次のコマンドを実行して、データベースのデフォルトの文字セット名を確認します。 database_nameをデータベース名に置き換えます。
mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name";
データベースにUTF8エンコーディングがない場合は、データベースをUTF8に変更する必要があります。その前に、データベースのバックアップを取る必要があります。
2。 MySQLデータベースのバックアップ
MySQLからログアウトし、次のコマンドを実行してMySQLデータベースのバックアップを取ります。 user_nameを置き換えます 、 pass_word およびdatabase_name それぞれユーザー名、パスワード、データベース名を使用します。
$ sudo mysql -u user_name -p pass_word database_name > backup.sql
3。テーブルの文字セットを変更する
次のコマンドを実行して、データベース内のすべてのテーブルの文字セットをUTF8に変更します。 database_nameをデータベース名に置き換えます
$ sudo mysql --database=database_name -B -N -e "SHOW TABLES" | awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' | mysql --database=database_name
MySQLでは、一度に1つのテーブルのみの文字セットを変更できます。各テーブルの文字セットを変更するために個別のコマンドを実行するのは面倒な場合があります。上記のコマンドは、データベース内のすべてのテーブルを一覧表示し、それらの文字セットを1つずつ自動的にUTF8に変換します。
4。データベースの文字セットを変更する
MySQLにログインし、次のコマンドを実行して、データベースの文字セットをUTF8に変更します。 database_nameをデータベース名に置き換えます。
mysql> ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
これで、MySQLデータベースにデータを挿入しても、エラーが発生することはありません。 Ubiqを使用すると、データを簡単に視覚化し、リアルタイムのダッシュボードで監視できます。 Ubiqを無料でお試しください。