2011-02-03 16 views
0

私はphpmyadminのを通じてウェブサーバに私のローカルマシンからMySQLのデータをインポートしていると私は私のスクリプトを実行するとき、私はこのエラーなぜこのエラーが発生していますか?

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '=' 

これが理由ですが取得しています?どのように私はこれを解決することができますか?

答えて

1

問題は、接続の照合と比較される列の照合のためです。あなたには3つの本当の選択肢があります。比較を適切な照合順序にキャストするか、列の照合順序を変更するか、接続の照合順序を変更します。

WHERE fooColumn = CAST('test' AS CHAR CHARACTER SET utf8) COLLATE utf8_general_ci 

を、列の照合順序変更するには:接続の照合順序を変更するには

ALTER TABLE fooTable 
    MODIFY follColumn VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci; 

を:キャストする

SET NAMES utf8 COLLATE utf8_general_ci 

等あなたがより明示的な情報が必要な場合は、あなたを示しては、クエリとテーブル定義。

+0

phpmyadminで照合を変更して編集しました。両方の接続とテーブル照合は同じです。しかし、私はまだerrroを取得しています –

+0

@アロン:あなたの正確なコードを投稿(あなたの質問に編集)... – ircmaxell

+0

私は投稿する必要がありますか? –

0

2つの文字列を2つの異なる文字エンコードで比較することはできません。彼らは同じ文字エンコーディングを持つ必要があります。これは基本的に照合が処理するものです。比較している両方の列で同じ照合が必要です。

照合順序は、phpMyAdminまたは他のデータベースエディションソフトウェア(MySQL Workbenchなど)から変更できます。すべてのテーブルが同じ照合順序を使用していることを確認してください。

+0

Phpmyadminからどうすればいいですか –

+0

ありがとうございました –

関連する問題