mysql -u username -p database -e deletedata.sql
我在第1行得到ERROR 1064(42000):你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'deletedata.sql'附近使用正确的语法
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 :(得分:1)
MySQL中的单引号表示字符串常量。您应该使用后引号(`)来转义表/列名称(或一般的标识符)。
答案 1 :(得分:0)
我想你可能会在FROM子句中使用表标识符时遇到麻烦。我从我的一个数据库中偷了一些例子。所以这会失败:
DELETE FROM Session s WHERE s.startTime<=date_sub(NOW(),INTERVAL 30 day);
这真的很奇怪,因为只需用“SELECT *”替换“DELETE”即可。
但这样可以正常工作:
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
答案 2 :(得分:0)
-e执行语句,而不是sql文件。 你需要什么:
mysql -u user -p pass db
然后进入mysql cli:
\. deletedata.sql
反斜杠点表示“源文件”
或者你可以管它:
cat delete.sql | mysql -u user -p pass db