2017-01-03 5 views
0

データベース内のすべてのテーブルがutf8mb4に移行されない限り、utf8接続を継続して使用する危険性はありますか?utf8mb4列でutf8接続を安全に使用できますか?

私はすべてのテーブルが移行されるまでutf8接続を維持すると考えました。

大規模なテーブル(数百GB)で変更するにはどのくらいの時間がかかりますか?

答えて

0

すべてのデータが3バイトのutf8サブセットにある限り、utf8とutf8mb4は同じです。

クライアントのエンコーディングを指定する接続パラメータ(SET NAMESを含む)。列/テーブル定義には、列でどのようなエンコーディングが処理されるかが示されます。 MySQLはINSERTまたはSELECTのように変換します。繰り返しても、すべてのデータがutf8サブセットである限り、変換は可能です(事実上ノーオペレーション)。

2

MySQLはあなたが文を挿入しようとした場合、変換を実行する方法のいくつかの例:

1«この絵文字は猫である» - テーブルUTF8でUTF8の接続には:MySQLは、文字から文字列を切り捨て4バイト:
«この絵文字»

2 - utf8mb4テーブルのUTF8に接続して:MySQLは "????"
«この絵文字との4バイト文字を置き換え????猫です

3 - utf8テーブルでutf8mb4接続で:MySQLは4バイト文字を "?"に置き換えます
«この絵文字? cat#

+0

utf8mb4が必要であるが、接続と列の間に不一致がある場合の良い例です。 –

関連する問題