2016-08-15 15 views
3

mysqlデータベースの接続照合を変更するにはどうすればよいですか?Mysqlの接続照合順序を変更するには

私は、ストアドプロシージャを実行すると、私はエラーが発生し、Ubuntuの中で14

をMySQLのワークベンチ5.5とMySQL 5.5を使用しています:

エラーコード:照合順序の1267違法ミックス(utf8_general_ciを、操作のためのIMPLICIT)及び(utf8_unicode_ci内、IMPLICIT)「=」

私は

を改正することで一時ソリューションを持っているインターネット、かかわらず、検索しています
COLLATE utf8_unicode_ci; 

ストアドプロシージャ

しかし、この問題は今後すべてのストアドプロシージャで修正したいと考えています。私は見つけました

これを返す。私はutf8_unicode_ciutf8_general_ciを変更する方法

collation_connection utf8_general_ci 
collation_database utf8_unicode_ci 
collation_server latin1_swedish_ci 

[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake 

これはにあなたの照合変数を変更します:あなたのmy.cnf

+0

まず、あなたのMySQL Workbenchのバージョンがあまりにも古いです。再試行する前に更新してください。 – Raptor

+0

エラーメッセージを受け取ったクエリと、関連するテーブルのための 'SHOW CREATE TABLE'を見てみましょう。また、 'SHOW VARIABLES LIKE 'char%';'も表示します。 –

答えて

2

ルックは、以下の内容collation_server近く見つける

collat​​ion_connectionのutf8_unicode_ci内 collat​​ion_server latin1_swedish_ci

MySQLサーバサービスを再起動することを忘れないでください。まず

ALTER DATABASE <database_name> CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

かは、MySQL WorkbenchでのALTER DATABASE画面でそれを行うことができます(常に最新のバージョンにこれを更新!)

+4

'root'として接続するとき' init_connect'は無視されることに注意してください。 –

0

、私は:

DBの照合については、次のSQLを使用することができますがエラーメッセージは、ストアドプロシージャの照合(接続)がテーブルと一致しないためだと考えてください。しかし、私は間違っていた、エラーの理由は、列の照合がテーブルの照合と一致しないためです。

私の場合、 'utf8_unicode_ci'の列の照合順序に変更したいと考えています。だから、 私はこの文を実行した:

alter table <YourTableName> 
    MODIFY <YourColumnName> VARCHAR(XXX) COLLATE 'utf8_unicode_ci'; 

照合の変更は、データが失われる場合がありますのでご注意ください。私にとっては、全般 - > Unicodeで、すべての英語はvarcharの列になります。なにもない。

さらに読み:すべての http://dev.mysql.com/doc/refman/5.7/en/charset-column.html

http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html

http://dev.mysql.com/doc/refman/5.7/en/charset-database.html

関連する問題