2017-02-08 3 views
0

注:一般的なSQLの答えはIllegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='RailsのActionView ::テンプレート::エラー:Mysql2 ::エラー:不正な照合順序のミックス(utf8_unicode_ci内、IMPLICIT)及び(utf8_general_ci、IMPLICIT)

この質問は特定されていますあなたが持っているレール/アクティブ・レコードへ:

ActionView::Template::Error: Mysql2::Error: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT)

accepted answerCOLLATEに言いますが、私はレールに特定のいくつかの例を期待していました。

答えて

0

私は自分自身の問題を解決し、前

を文書化したい:それは私はいくつかの照合不一致を持っていたし、更新に必要な見せていた

Membership.joins(person: :account).where(foo: :bar) 

後:

Membership 
.joins('INNER JOIN `people` ON `people`.`id` = `memberships`.`person_id`') 
.joins('INNER JOIN `accounts` ON `accounts`.`person_id` COLLATE utf8_general_ci = `people`.`id` COLLATE utf8_general_ci') 

具体的には、あなたのカラム名の後にCOLLATE <UTF8_BLAH>を追加します。

の代わり:

joins accounts on person_id = people.id 

使用:

joins accounts on person_id COLLATE utf8_general_ci = people.id COLLATE utf8_general_ci 

あなたはまた、すべてのテーブルやデータベース全体の照合を固定することにより、この問題を解決することができます。

関連する問題