MySQL错误1064,不知道我在这里做错了什么

时间:2009-08-26 19:36:43

标签: mysql database mysql-error-1064

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);

我能错过什么?

3 个答案:

答案 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