2009-08-26 21 views
-1
mysql -u username -p database -e deletedata.sql 

エラー1行目に1064(42000)が表示されます。SQL構文に誤りがあります。ライン1に近い「deletedata.sql」を使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認しMySQLのエラー1064、私がここで間違っていることを確認していません

DELETE FROM 'table1' WHERE 'column' <= date_sub(current_date, INTERVAL 37 day); 
DELETE FROM 'table2' WHERE 'column' <= date_sub(current_date, INTERVAL 37 day); 

私は何をしないのだろうか?

+0

私は両方のソリューションを試して、同じエラーが発生した...困惑! –

+0

MySQLコンソールから「describe 'table1'」を実行して、テーブルスキーマ(または少なくとも関連するフィールド)を貼り付けることができます。 –

答えて

0

-eはSQLファイルではなく文を実行します。あなたが必要なもの :

mysql -u user -p pass db 

、その後、MySQLのCLIへ:

\. deletedata.sql 

バックスラッシュドットは、 "ソースファイル"

それとも、を意味することができますちょうどパイプそれ:

cat delete.sql | mysql -u user -p pass db 
+0

ありがとう...最後にあなたが働くように言ったと思うので、私は戻って私の構文を見て、mysqlのマニュアルをチェックしました。これは私のために働いた: mysql --user = user_name --password = your_password db_name> deletesql.sql 最後の質問...出力はありません...私は得ることができるので、この冗長にする方法はありますかそれが私のデータを削除したという確認?ありがとう。 –

+0

心配しないで...投稿する前にまずRTFMを持っているはずです。 --verboseは、コマンドラインに追加されるフラグです。 –

1

MySQLの一重引用符は、文字列定数を示します。テーブル/カラム名(または一般的な識別子)をエスケープするには、バッククォート( `)を使用する必要があります。

+0

これはうまくいかなかった... –

+0

特に動作しなかったものは? 'DELETE FROM \' table1 \ 'WHERE \' column \ '<= date_sub(current_date、INTERVAL 37日);はうまくいくはずです。上記と同じエラーが表示されますか? – ChssPly76

+0

はい、上記と同じエラーです。 –

0

FROM句でテーブル識別子を使用することに問題があると思います。私は自分のデータベースからいくつかの例を盗んだ。したがって、これは失敗します:

DELETE FROM Session s WHERE s.startTime<=date_sub(NOW(),INTERVAL 30 day); 

"DELETE"を "SELECT *"に置き換えるだけで本当に奇妙です。

しかし、これは正常に動作します:

DELETE FROM Session WHERE startTime<=date_sub(NOW(),INTERVAL 30 day); 
DELETE s FROM Session s WHERE s.startTime<=date_sub(NOW(),INTERVAL 30 day); 

構文奇妙。楽しい! :-D

+0

これはうまくいきませんでした... –

関連する問題