"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

【MySQL】インポートで"ERROR 2006 (HY000): MySQL server has gone away"にハマったので解決方法をメモ



スポンサーリンク

レンタルサーバが高い上に、サイトが人気なくてAWSのt.microに移した方がよいと思ったのでdrupalを移行中。

そんで、早速 phpmyadminからsqlファイルでexportしたものをawsにインポートしようとしたら以下のエラーが。

>sudo mysql -u <userid> -p<password> <dbname>  < <file>.sql
ERROR 2006 (HY000): MySQL server has gone away

いろいろと調べると、一時メモリ不足らしい。

でmy.cnf(/etc/my.conf)に以下を設定後、mysql再起動後(sudo /etc/init.d/mysqld restart)もう一回トライしたが解決せず。

max_allowed_packet=100M

そして、以下のコマンドで、パラメータを見てみたら反映されておらず。

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***

+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 1048576   |
+--------------------+-----------+
1 row in set (0.01 sec)

原因はmy.cnfの下記場所を間違ったからだった。

[mysqld]
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

max_allowed_packet=100M  <--ここが正しい
wait_timeout=6000

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

max_allowed_packet=100M  <--ここが誤り

ちゃんとわかっていないとこんなことになりますな。



さて、次のエラーが。これは、phpmyadminでソースシステムからsqlファイル形式でダンプファイルを取得し、ターゲットシステムでコマンドラインからのインポートで発生ました。

ERROR 1064 (42000) at line 1054438: You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right syntax to
 use near '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w' at line 1


回避方法は、ソースシステムダンプファイル取得時に、圧縮オプションでダンプを取得して、ターゲットシステムでphpmyadminからインポートで上手く入りました。

背景はわからんです。

そして、テーブルが100個程度exportしたつもりがimport時には、20個ぐらいしかインポートされず、差分を何回かに分けてインポートせざるを得ませんでした。エラーぐらい出て欲しい。




1から勉強しなおしだ。

MySQL徹底入門 第3版 ?5.5新機能対応?

MySQL徹底入門 第3版 ?5.5新機能対応?