次のコマンドを実行していますが、参照などに関するエラーが発生します。
#!/bin/bash
test='my_table'
date='2020-10-31 00:00:00.000000'
mysql --user=halloween --password='ghost_123' --database='ghost_database' <<END
use ghost_datebase;
CREATE EVENT myevent ON SCHEDULE AT \"$date"\ ON COMPLETION NOT PRESERVE ENABLE DO SELECT * FROM "$test";
END
その後、次のエラーが発生します。
ERROR at line 2: Unknown command '\"'.
ベストアンサー1
二重引用符は、END
ここで文書の先頭のタグを識別します。次に、ここで説明されているように正しいMySQL構文を使用してください。 MySQLで正常にエスケープされない限り、引用符をエスケープしないでください。
mysql --user='halloween' --password='ghost_123' --database='ghost_database' <<"END"
CREATE EVENT myevent ON SCHEDULE AT "$date" ON COMPLETION NOT PRESERVE ENABLE DO SELECT * FROM "$test";
END
私はあなたのSQL構文を変更したくありません。私は、テーブル名(または文字列)に二重引用符が正しいことを完全にはわかりません。
挿入する変数がない場合は、here-doc識別子を一重引用符で囲むことが正確です。 (参照は文字列への参照と同じです。)