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

我会错过什么?

4

3 回答 3

1

MySQL 中的单引号表示字符串常量。您应该使用反引号 (`) 来转义表/列名称(或一般的标识符)。

于 2009-08-26T19:40:07.537 回答
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

于 2009-08-26T19:49:00.983 回答
0

-e 执行一个语句,而不是一个 sql 文件。你需要什么:

mysql -u user -p pass db

然后进入mysql cli:

\. deletedata.sql

反斜杠点表示“源文件”

或者你可以只管它:

cat delete.sql | mysql -u user -p pass db
于 2009-08-26T20:33:44.903 回答