いつもお世話になっております。
今回、レンタルサーバのコアサーバよりVPSに移行すべくMySQLのダンプを行いました。
DBはutf8mb4_unicode_ciで作られています。
移行前のDBの文字コード
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
VPS側で新しいDBを作成しました。
create database [DB名]; grant all privileges on [DB名].* to 'ユーザ名'@'localhost' identified by 'パスワード'; flush privileges;
もしくは
create database [DB名]; create user [ユーザ名]; grant all privileges on [DB名].* to 'ユーザ名'@'localhost' identified by 'パスワード'; flush privileges;
新しいDBの文字コード
MariaDB [(none)]> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
DBの投入
sudo mysql -u root DB名 < /home/hoge/sql/mysql.dump
ここで、
ERROR 1709 (HY000) at line 101: Index column size too large. The maximum column size is 767 bytes.
というエラーが出て先に進めなくなりました。
utf8mb4_unicode_ciで作ったのが問題だと思い、
下記のURL等を参考にしてmy.cnfを編集しました。
https://blog.kamipo.net/entry/2012/11/13/102024
/etc/mysql$ sudo nano my.cnfにて追加
[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix
sudo systemctl restart mysql
で再起動して再度投入を試みましたが、エラーが出ます。
ERROR 1709 (HY000) at line 101: Index column size too large. The maximum column size is 767 bytes.
その他にもmy.cnfを編集して再起動しましたが、下記のようなエラーが出ます。
mysql: unknown variable 'innodb_default_row_format=dynamic'
mysql: unknown variable 'character_set_server=utf8mb4'
mysql: unknown variable 'innodb_large_prefix=ON'
そのため、一旦my.cnfは元の設定に戻しました。
ここで万策尽きました。
utf8mb4_unicode_ciを使ったDBを新サーバにどのように投入できるでしょうか?
何卒よろしくお願いいたします。
Ubuntu18.04
mysql Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
回答1件
あなたの回答
tips
プレビュー