sql >> データベース >  >> RDS >> Mysql

照合の不正な組み合わせ(latin1_general_ci、IMPLICIT)エラーを解決する方法

    私は、恐ろしい「照合の違法な組み合わせ」エラーに対する答えを探すために半日を費やしました。データベースの一部の列が特に照合されていないことがわかりましたutf8_unicode_ci 。 mysqlはこれらの列を暗黙的に照合したようですutf8_general_ci

    具体的には、「SHOW CREATE TABLE table1」クエリを実行すると、次のようなものが出力されました。

    | table1 | CREATE TABLE table1id int(11)NOT NULL、col1 varchar(4)CHARACTER SET utf8 NOT NULL、col2 int(11)NOT NULL、PRIMARY KEY(photo_idtag ))ENGINE =InnoDB DEFAULT CHARSET =utf8 COLLATE =utf8_unicode_ci |

    'col1' varchar(4)CHARACTER SET utf8 NOT NULLの行に注意してください。 照合が指定されていません。次に、次のクエリを実行しました:

    ALTER TABLE table1 CHANGE col1 col1 VARCHAR(4)CHARACTER SET utf8COLLATE utf8_unicode_ci NOT NULL;

    これにより、「照合の不正な組み合わせ」エラーが解決されました。これが他の誰かに役立つことを願っています。



    1. 入力値をサニタイズする関数PHP

    2. セット名とmysqli_set_charset— mysqli_escape_stringに影響を与える以外に、それらは同一ですか?

    3. java.security.AccessControlException:アクセスが拒否されました(java.security.SecurityPermission authProvider.SunMSCAPI)

    4. 正しいクレデンシャルでアクセスが拒否されましたが、何が起こっていますか?