top of page
検索

Error while connecting to MariaDB 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'への対処方法

  • yokotaniresearch
  • 2月26日
  • 読了時間: 2分

こんにちは。データサイエンス部門の横谷謙次です。


さて、MariaDBを使って、そのデータベースを呼び出そうとすると「Error while connecting to MariaDB 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'」というエラーが出ます。


このエラーは、MariaDBにおいてデフォルト設定されている文字種「'utf8mb4_0900_ai_ci'」が上手く読み込めない、ということを意味します。



これまで、様々なアプローチがこれまで提案されていますが(詳細は下記のサイト)、あんまり良い対処方法が無かったですので、私なりの対処方法を示します。




1.データベース側で文字種を指定


まず、MariaDBにログインした後、使用するデータベースの文字種を「utf8mb4_unicode_520_ci」に指定します。つまり、デフォルト設定の文字種を改変します。


MariaDB [your_db]> ALTER DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;


もちろん、your_dbというのはご自身のデータベース名を入力してください。



2.サーバー側で同じ文字種を指定


次に、サーバー側でMariaDBを呼び出す際に、

charset='utf8mb4',

   collation='utf8mb4_unicode_520_ci',」と指定して、先ほど改変したものと同じ文字種を指定します。


こんな感じです。


try:

connection = mysql.connector.connect(

host='localhost',

database='your_db',

user='your_username',

password='your_password',

charset='utf8mb4',

collation='utf8mb4_unicode_520_ci',

use_pure=True

)

if connection.is_connected():


もちろん、データベース名、ユーザー名、パスワードなどについてはご自身の設定を記入して下さい。


これでデータベース側とサーバー側で文字種が'utf8mb4_unicode_520_ci'に変更されて、かつ、統一されたので、エラーはなくなるはずです。



3.雑感


なお、このエラーの根本的な原因はmysqlという古いデータベースを使用して、MariaDBという新しいデータベースにアクセスしたため、と考えられます。言い換えると、このエラーは新旧データベース間の互換性の問題により発生していると言えます。


もしmysqlのデータベースがさほど構築されていない状態でしたら、新しいデータベースであるMariaDBに統一して、データベースを改めて構築しても良いかもしれません。こちらの方がシンプルでかつ根本的な解決策と思います。


ただし、この解決策はmysql側のデータベースを根本的に改変するので、運用しているmysql側のデータベースが破損するかもしれません。このあたりは自己責任でお願いいたします(汗)。






 
 
 

Comments


サイコビット株式会社

住所:〒651-0084 神戸市中央区磯辺通一丁目1番18号カサベラ国際プラザビル707号室

営業時間:平日:18:00 - 22:00

yokotaniresearch【アット】hotmail.co.jp

​【アット】を@に変更の上、ご連絡下さい。

bottom of page