MySQLデータベースの文字セット全体と照合順序をUTF-8に変換する方法は?


459

MySQLデータベースの文字セット全体をUTF-8に変換し、照合順序をUTF-8に変換するにはどうすればよいですか?


22
後の訪問者へ:サイドバーの関連する質問に注意してutf8_unicode_ci、ではなくを使用してくださいutf8_general_ci
fuxia 2013年

14
あなたは完全なUTF-8をサポートしたい場合は、おそらくもの文字セットを使用したいと思うutf8mb4のではなくをutf8としてutf8だけフルレンジとは対照的に、基本多言語面をサポートしています。MySQL 5.5.3以降が必要です。
Martin Steel、

4
私はあなたがに切り替える場合は、上記の私のコメントに言及するのを忘れてしまったutf8mb4あなたもスイッチ照合にする必要がありますutf8mb4_unicode_ci
マーティン・スチール

3
さらに良いのは、collat​​ion utf8mb4_unicode_520_ci、または最新の利用可能なバージョンです。
リックジェームズ

@MartinSteelデフォルトでは、その文字セットの照合順序だと思います。
VaTo 2016

回答:


715

ALTER DATABASEおよびALTER TABLEコマンドを使用します。

ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

または、MySQL 5.5.2以前を使用していて、4バイトUTF-8をサポートしていない場合は、utf8代わりにを使用しますutf8mb4

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

12
このCONVERT TO手法では、テキストが他の文字セット(latin1など)に正しく格納されていて、マングルされていない(latin1に変換されずにlatin1列に詰め込まれたUTF-8バイトなど)と想定しています。
リックジェームズ

1
これによりテーブルが再構築され、大規模な本番システムでは実行不可能になります。ASCII文字のみがlatin1列に格納されていることが確実な場合、再構築せずにテーブルの文字セット/照合順序を変更できますか?
Andrew

@Andrew大規模な運用システムには、通常、メンテナンス用にミラーリングされたDBがあります。
BalusC 2017年

1
文字セットをutf8に変更すると、データ型がテキストからミディアムテキストに変更されます。それは期待されていますか?
ジェリー

1
@Jerryおそらく、「列がutf8に変換される場合、各文字には最大3バイトが必要になる可能性があり、最大長は3×65,535 = 196,605バイトです。その長さはTEXT列の長さバイトに収まらないため、 MySQLはデータ型をMEDIUMTEXTに変換します。これは、長さバイトが196,605の値を記録できる最小の文字列型です。同様に、VARCHARカラムはMEDIUMTEXTに変換される場合があります。文字セットの変更
jabbascript '21

129
  1. バックアップを作成してください!

  2. 次に、データベースにデフォルトの文字セットを設定する必要があります。これは既存のテーブルを変換せず、新しく作成されたテーブルのデフォルトを設定するだけです。

    ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;
  3. 次に、既存のすべてのテーブルとその列の文字セットを変換する必要があります。これは、現在のデータが実際には現在の文字セットにあることを前提としています。列が1つの文字セットに設定されていても、データが実際に別の文字セットに格納されている場合は、MySQLのマニュアルでこれを処理する方法を確認する必要があります。

    ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

44
注:ALTER TABLE tablename CHARACTER SET utf8は、新しく作成された列に使用されるテーブルにデフォルトの文字セットのみを設定します。すでに文字セットが設定されている既存の列は変換されません。
newspire

最初にバックアップバックアップバックアップを読んでおくべきでした...しかし、運が良かったのは、それが開発環境上にあったことです。だから私の賛成投票はあなたに行きます!
DominikAngerer 2014

4
@DominikAngerer:何が壊れた?
cic 2015

16
utf8_general_ci推奨されなくなったことに注意してください。MySQL 5.5.3以降ではutf8mb4なくを使用する必要がありますutf8。どちらもUTF-8エンコーディングを参照してutf8いますが、古いものにはMySQL固有の制限があり、上記の番号の付いた文字を使用できませんでした0xFFFD
u01jmg3 2017年

76

コマンドラインシェル

コマンドラインシェルの場合、これを非常にすばやく実行できます。"dbname"と入力するだけです:D

DB="dbname"
(
    echo 'ALTER DATABASE `'"$DB"'` CHARACTER SET utf8 COLLATE utf8_general_ci;'
    mysql "$DB" -e "SHOW TABLES" --batch --skip-column-names \
    | xargs -I{} echo 'ALTER TABLE `'{}'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;'
) \
| mysql "$DB"

簡単なコピー/貼り付け用のワンライナー

DB="dbname"; ( echo 'ALTER DATABASE `'"$DB"'` CHARACTER SET utf8 COLLATE utf8_general_ci;'; mysql "$DB" -e "SHOW TABLES" --batch --skip-column-names | xargs -I{} echo 'ALTER TABLE `'{}'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) | mysql "$DB"

2
これについて詳しく説明していただけますかERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DB="dbname"
steros 14

@ 4485670 コマンドラインシェルでこれを実行する必要があります。MySQLクライアント接続しか利用できない場合は、以下のsdforのコードを使用してください。
アーノルドダニエルズ2014年

6
このコードはうまく機能します。必要に応じて、mysqlの後に-h [ホスト名] -u [ユーザー名] -p [パスワード]を追加することを忘れないでください。
分散

3
おそらく実際のシステムでは外部キーのチェックを無効にしたいと思うでしょう: DB="db_name"; ( echo 'ALTER DATABASE '"$ DB"' `CHARACTER SET utf8 COLLATE utf8_general_ci; '; mysql --uuser -ppassword -hhost "$ DB" -e "SHOW TABLES" --batch --skip-column-names | xargs -I {} echo 'SET foreign_key_checks = 0; ALTER TABLE '{}'CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ' )| mysql -uuser -ppassword -hhost "$ DB" `
Adam Nelson

1
"SHOW TABLES"ではなく "show full tables where Table_Type = 'BASE TABLE'"を使用するまで、私にとってはうまくいきませんでした
Brian Peterson

68

SQLを作成して、すべてのテーブルを次のように更新できます。

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

出力をキャプチャして実行します。

上記のアーノルド・ダニエルズの答えはよりエレガントです。


なぜ2つのテーブル変更クエリを追加したのですか?1つでは不十分ですか?
Akshay 14

7
@Akshay、いい質問。最初の変更テーブルクエリは新しい列のデフォルトを設定し、2番目の変更テーブルクエリは既存の列を変換します。
UnlimitedInfinity

4
参考までに:dev.mysql.com/doc/refman/5.5/en/alter-table.html MySQLドキュメントによると、ALTERステートメントの「文字セットに変換」バージョンは、1つのステップで両方を実行します:「テーブルのデフォルトを変更するには文字セットすべての文字列(CHAR、VARCHAR、TEXT)を新しい文字セットに
変換

2
このエラー#1054-「where句」の不明な列「webdb_playground」がありますが、自分のデータベースが正しいものであると確信しています
Yannis Dran

1
@YannisDranデータベース名が文字列に含まれていない可能性があるためWHERE TABLE_SCHEMA=webdb_playground、不明な列エラーが発生しましたWHERE TABLE_SCHEMA="webdb_playground"が、成功した可能性があります。他の誰かがそれに遭遇した場合に備えて、何かすること。
jabbascript

17

続行する前に、次のことを確認してください。データベースの完全バックアップを完了してください。

ステップ1:データベースレベルの変更

  • データベースの照合順序と文字セットを特定する

    SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM 
    information_schema.SCHEMATA S
    WHERE schema_name = 'your_database_name'
    AND
    (DEFAULT_CHARACTER_SET_NAME != 'utf8'
        OR
     DEFAULT_COLLATION_NAME not like 'utf8%');
  • データベースの照合の修正

    ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;

ステップ2:テーブルレベルの変更

  • 文字セットまたは照合順序が正しくないデータベーステーブルの特定

    SELECT CONCAT(
    'ALTER TABLE ',  table_name, ' CHARACTER SET utf8 COLLATE utf8_general_ci;  ', 
    'ALTER TABLE ',  table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  ')
    FROM information_schema.TABLES AS T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` AS C
    WHERE C.collation_name = T.table_collation
    AND T.table_schema = 'your_database_name'
    AND
    (C.CHARACTER_SET_NAME != 'utf8'
        OR
     C.COLLATION_NAME not like 'utf8%')
  • テーブル列の照合と文字セットの調整

上位のsql出力をキャプチャして実行します。(以下のように)

ALTER TABLE rma CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE rma CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  
ALTER TABLE rma_history CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE rma_history CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  
ALTER TABLE rma_products CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE rma_products CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  
ALTER TABLE rma_report_period CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE rma_report_period CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  
ALTER TABLE rma_reservation CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE rma_reservation CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  
ALTER TABLE rma_supplier_return CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE rma_supplier_return CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  
ALTER TABLE rma_supplier_return_history CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE rma_supplier_return_history CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;  
ALTER TABLE rma_supplier_return_product CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE rma_supplier_return_product CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

参照:https : //confluence.atlassian.com/display/CONFKB/How+to+Fix+the+Collat​​ion+and+Character+Set+of+a+MySQL+Database


1
現在、このスクリプトはdbに 'utf8_unicode_ci'を使用していますが、テーブルには 'utf8_general_ci'を使用しています-それは意図的なものでしたか?(両方とも同じ文字セットを使用する必要があると思います)
gmcnaughton '27 / 07/16

stackoverflow.com/questions/10957238/…ここに完全な回答が残っています
VH

8

HeidiSQLを使用します。無料で非常に優れたdbツールです。

ツールメニューから、バルクテーブルエディターに入る

完全なデータベースを選択するか、変換するテーブルを選択し、

  • デフォルトの照合を変更する:utf8mb4_general_ci
  • tick Convert to charset:utf8

実行する

これにより、完全なデータベースがラテン語からutf8に数秒で変換されます。

魅力のように動作します:)

HeidiSQLはデフォルトでutf8として接続するため、テーブルデータの検査時に特殊文字は文字(æøå)として認識され、エンコードされたものとして認識されないはずです。

ラテン語からutf8に移行する際の実際の落とし穴は、pdoがutf8文字セットと確実に接続することです。そうしないと、utf8テーブルにごみデータが挿入され、Webページ上のあちこちに疑問符が表示されるため、テーブルデータがutf8ではないと思います...


詳しく説明してもらえますか?私はまさにこの問題を抱えています-特殊文字とスペースが疑問符として表示されます。PHPMyAdminを使用してMAMPでデータベースを変換しようとしています。オフラインで開発したため、私のホストがutf8mb4をサポートしていないことがわかりました。私はWindowsを持っていないので、HeidiSQLを使用できません。PHPMyAdminでこれを実現する方法はありますか?
RexTheRunt 2016

このように。特にあなたはテーブルがたくさんあります。
tyan 2016

CHARSETを変換しようとするとエラーが発生します:SQLエラー(1025):名前変更のエラー...しかし、これは驚くべきSQLマネージャーツールです!
marcolopes 2017

だれでもheidisqlの優れた概要とチュートリアルが必要な場合は、この記事をチェックしてください
DougB

6

@sdforコメントに触発されて、これは仕事をするbashスクリプトです

#!/bin/bash

printf "### Converting MySQL character set ###\n\n"

printf "Enter the encoding you want to set: "
read -r CHARSET

# Get the MySQL username
printf "Enter mysql username: "
read -r USERNAME

# Get the MySQL password
printf "Enter mysql password for user %s:" "$USERNAME"
read -rs PASSWORD

DBLIST=( mydatabase1 mydatabase2 )

printf "\n"


for DB in "${DBLIST[@]}"
do
(
    echo 'ALTER DATABASE `'"$DB"'` CHARACTER SET utf8 COLLATE `'"$CHARSET"'`;'
    mysql "$DB" -u"$USERNAME" -p"$PASSWORD" -e "SHOW TABLES" --batch --skip-column-names \
    | xargs -I{} echo 'ALTER TABLE `'{}'` CONVERT TO CHARACTER SET utf8 COLLATE `'"$CHARSET"'`;'
) \
| mysql "$DB" -u"$USERNAME" -p"$PASSWORD"

echo "$DB database done..."
done

echo "### DONE ###"
exit

4

データが同じ文字セットでない場合は、http: //dev.mysql.com/doc/refman/5.0/en/charset-conversion.htmlからのこのスニペットを検討することができます

列が非バイナリデータ型(CHAR、VARCHAR、TEXT)の場合、その内容は他の文字セットではなく、列の文字セットでエンコードする必要があります。コンテンツが別の文字セットでエンコードされている場合、最初にバイナリデータ型を使用するように列を変換してから、目的の文字セットを持つ非バイナリ列に変換できます。

次に例を示します。

 ALTER TABLE t1 CHANGE c1 c1 BLOB;
 ALTER TABLE t1 CHANGE c1 c1 VARCHAR(100) CHARACTER SET utf8;

正しい照合を選択してください。そうしないと、一意のキーの競合が発生する可能性があります。たとえば、ÉleanoreとEleanoreは一部の照合で同じと見なされる場合があります。

余談:

データベースに特定の文字がUTF-8として保存されていても、その文字が「壊れた」状況がありました。utf8データを使用してメールを送信する場合は、メールを変換してUTF8で送信することもできます。

PHPMailerで、次の行を更新します。 public $CharSet = 'utf-8';


4

多数のテーブルがあるデータベースの場合、単純なphpスクリプトを使用して、データベースの文字セットとすべてのテーブルを次のように更新できます。

$conn = mysqli_connect($host, $username, $password, $database);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$alter_database_charset_sql = "ALTER DATABASE ".$database." CHARACTER SET utf8 COLLATE utf8_unicode_ci";
mysqli_query($conn, $alter_database_charset_sql);

$show_tables_result = mysqli_query($conn, "SHOW TABLES");
$tables  = mysqli_fetch_all($show_tables_result);

foreach ($tables as $index => $table) {
  $alter_table_sql = "ALTER TABLE ".$table[0]." CONVERT TO CHARACTER SET utf8  COLLATE utf8_unicode_ci";
  $alter_table_result = mysqli_query($conn, $alter_table_sql);
  echo "<pre>";
  var_dump($alter_table_result);
  echo "</pre>";
}

このスクリプトはどこから実行しますか?
Yannis Dran

1
@YannisDran実行元のIPがデータベースにアクセスできる限り、問題にはなりません。最初に必ずバックアップを取ってください。
ダンルーカス

よし、どうやって実行するの?サーバーにアップロードしてから、その位置へのパスを入力して実行する必要がありますか?
Yannis Dran、2018年

4
DELIMITER $$  

CREATE PROCEDURE `databasename`.`update_char_set`()  

BEGIN  
 DECLARE done INT DEFAULT 0;  
 DECLARE t_sql VARCHAR(256);  
 DECLARE tableName VARCHAR(128);  
 DECLARE lists CURSOR FOR SELECT table_name FROM `information_schema`.`TABLES` WHERE table_schema = 'databasename';  
 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;  
 OPEN lists;  
 FETCH lists INTO tableName;  
 REPEAT  
    SET @t_sql = CONCAT('ALTER TABLE ', tableName, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci');  
    PREPARE stmt FROM @t_sql;  
    EXECUTE stmt;  
    DEALLOCATE PREPARE stmt;  
 FETCH lists INTO tableName;  
 UNTIL done END REPEAT;  
 CLOSE lists;  
END$$  

DELIMITER ;  

CALL databasename.update_char_set();

おかげで、これは実際にデータベース全体(つまり、各テーブル)に対して実行する方法を示す数少ない回答の1つです。魅力のように働いた。
町筋

3
mysqldump -uusername -ppassword -c -e --default-character-set=utf8 --single-transaction --skip-set-charset --add-drop-database -B dbname > dump.sql
cp dump.sql dump-fixed.sql
vim dump-fixed.sql


:%s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/
:%s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/
:wq

mysql -uusername -ppassword < dump-fixed.sql

3

最も安全な方法は、最初に列をバイナリタイプに変更してから、目的の文字セットを使用してそのタイプに変更することです。

各列タイプには、次のようにそれぞれのバイナリタイプがあります。

  1. CHAR => BINARY
  2. テキスト=> BLOB
  3. TINYTEXT => TINYBLOB
  4. MEDIUMTEXT => MEDIUMBLOB
  5. LONGTEXT => LONGBLOB
  6. VARCHAR => VARBINARY

例えば。:

ALTER TABLE [TABLE_SCHEMA].[TABLE_NAME] MODIFY [COLUMN_NAME] VARBINARY;

ALTER TABLE [TABLE_SCHEMA].[TABLE_NAME] MODIFY [COLUMN_NAME] VARCHAR(140) CHARACTER SET utf8mb4;

私はいくつかのlatin1テーブルで試してみましたが、すべての発音区別符号が保持されました。

これを行うすべての列に対してこのクエリを抽出できます。

SELECT
CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.', TABLE_NAME,' MODIFY ', COLUMN_NAME,' VARBINARY;'),
CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.', TABLE_NAME,' MODIFY ', COLUMN_NAME,' ', COLUMN_TYPE,' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM information_schema.columns
WHERE TABLE_SCHEMA IN ('[TABLE_SCHEMA]')
AND COLUMN_TYPE LIKE 'varchar%'
AND (COLLATION_NAME IS NOT NULL AND COLLATION_NAME NOT LIKE 'utf%');

すべての列でこれを行った後、すべてのテーブルでそれを行います。

ALTER TABLE [TABLE_SCHEMA].[TABLE_NAME] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

すべてのテーブルに対してこのクエリを生成するには、次のクエリを使用します。

SELECT
CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_COLLATION NOT LIKE 'utf8%'
and TABLE_SCHEMA in ('[TABLE_SCHEMA]');

そして、すべての列とテーブルを変更したので、データベースで同じことを行います。

ALTER DATABASE [DATA_BASE_NAME] CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;

1

テーブルを変換できない場合、またはテーブルが常にutf8以外の文字セットに設定されているが、utf8が必要な場合は、テーブルを消去して最初からやり直し、明示的に指定することをお勧めします。

create database database_name character set utf8;

0

私のために働いた唯一の解決策:http : //docs.moodle.org/23/en/Converting_your_MySQL_database_to_UTF8

テーブルを含むデータベースの変換

mysqldump -uusername -ppassword -c -e --default-character-set=utf8 --single-transaction --skip-set-charset --add-drop-database -B dbname > dump.sql

cp dump.sql dump-fixed.sql
vim dump-fixed.sql

:%s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/
:%s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/
:wq

mysql -uusername -ppassword < dump-fixed.sql

0

alter table table_name charset = 'utf8';

これは私の場合に使用できた簡単なクエリです。要件に応じてtable_nameを変更できます。


通常、回答には、あなたが提案することの説明が伴うはずです。
RiggsFolly 2015年

0

データベース自体の文字セットエンコーディングをUTF-8に変更するには、mysql>プロンプトで次のコマンドを入力します。DBNAMEをデータベース名に置き換えます。

ALTER DATABASE DBNAME CHARACTER SET utf8 COLLATE utf8_general_ci;

0

DBツールNavicatを使用して、より簡単にすることもできます。

  • シヴァ。

データベースを右クリックし、ドロップダウンで必要に応じてDBプロパティと変更を選択します。

ここに画像の説明を入力してください


0

コマンドラインソリューションとビューの除外

私は、データベースにビューを持っているような他の人のために、@ Jasnyの回答を単に完成@Brianさせています。

このようなエラーが発生した場合:

ERROR 1347 (HY000) at line 17: 'dbname.table_name' is not of type 'BASE TABLE'

これは、おそらくビューがあり、それらを除外する必要があるためです。しかし、それらを除外しようとすると、MySQLは1ではなく2列を返します。

SHOW FULL TABLES WHERE Table_Type = 'BASE TABLE';
-- table_name1  BASE TABLE
-- table_name2  BASE TABLE

したがって、Jasnyのコマンドを適応させawkて、テーブル名を含む最初の列のみを抽出する必要があります。

DB="dbname"
(
    echo 'ALTER DATABASE `'"$DB"'` CHARACTER SET utf8 COLLATE utf8_general_ci;'
    mysql "$DB" -e "SHOW FULL TABLES WHERE Table_Type = 'BASE TABLE'" --batch --skip-column-names \
    | awk '{print $1 }' \
    | xargs -I{} echo 'ALTER TABLE `'{}'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;'
) \
| mysql "$DB"

簡単なコピー/貼り付け用のワンライナー

DB="dbname"; ( echo 'ALTER DATABASE `'"$DB"'` CHARACTER SET utf8 COLLATE utf8_general_ci;'; mysql "$DB" -e "SHOW FULL TABLES WHERE Table_Type = 'BASE TABLE'" --batch --skip-column-names | awk '{print $1 }' | xargs -I{} echo 'ALTER TABLE `'{}'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) | mysql "$DB"

-1

文字セットエンコーディングをUTF-8に変更するには、PHPMyAdminの簡単な手順に従います

  1. データベースを選択してください SS

  2. オペレーションに移動 SS

  3. [操作]タブの下部の照合ドロップダウンメニューで、エンコーディングie(utf8_general_ci)を選択し、チェックボックス(1)すべてのテーブル照合を変更する、(2)すべてのテーブル列照合を変更するをオンにします。囲碁を打つ。

SS

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.