土. 10月 8th, 2022

はじめに

mysqldumpで取得した結果を、そのままmysqlへ流しこもうとしたらエラーになった。

実施したコマンド

変数には適宜設定値が入る。

やりたいことはmysqldumpでデータを取得し、標準出力で別のサーバへ流し込む。

mysqldump -u$dbbackupuser $dbbackupname $table -h$dbbackuporiginal -p$dbbackuppass | mysql -u$dbrestoreuser -h$dbrestoreserver -p$dbrestorepass $dbrestorename 

発生したエラー

ERROR 1064 (42000) at line 101: 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 '' at line 1

原因

mysqldumpコマンドはデフォルトでmysqlの独自構文が入ってしまうことがあり、微妙なmysqlのversionの差異がこの独自構文を受け付けないことがある。

対処

ANSIフォーマットで出力させるオプション “` –compatible=ansi “` を追加する

 after

mysqldump --compatible=ansi -u$dbbackupuser $dbbackupname $table -h$dbbackuporiginal -p$dbbackuppass | mysql -u$dbrestoreuser -h$dbrestoreserver -p$dbrestorepass $dbrestorename