はじめに
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