我正在尝试从备份中恢复mysql数据库。我可以直接在命令提示符下使用
mysql> -u username -ppassword < E:\replication\DestinationTest\restore.sql.这样做效果很好。
我尝试将这一行与其他.txt语句放在一个mysql文件中,然后调用它。txt文件从mysql命令提示符。我有很少的delete和.txt文件中的restore语句。它看起来是这样的:
enter code here
Delete from Db.tbl1;
Delete from Db.tbl2;
Delete from Db.tbl3;
Delete from Db.tbl4;
Delete from Db.tbl5;
-h Server -D DB -u username -ppassword < E:\replication\DestinationTest\Db.sql;当我从mysql提示符调用上面的.txt文件时,它执行了delete语句,但在恢复部分出现了错误。它显示未知数据库'ereplicationdestinationtestdb.sql‘。请告诉我,做这件事的正确方法是什么。
发布于 2020-07-21 01:26:35
您的delete语句正在执行,因为每个表的前面都有模式名,如下所示。
从Db.tbl1删除;从Db.tbl2删除;
但是请确认您是否错过了需要将表恢复到的模式名称?根据您提到的错误,您的restore.sql似乎不知道需要将表导入到哪个模式中。
发布于 2020-07-21 03:50:39
这是“提示符,而不是命令:
mysql>所以这是无效的:
mysql> -u username -ppassword < E:\replication\DestinationTest\restore.sql.此外,末尾的句号可能是一个打字错误。
这可能是批处理文件中的有效行:
mysql -u username -ppassword < E:\replication\DestinationTest\restore.sql如果要在批处理文件中执行其他操作,请首先使用SQL语句构建一个文本文件,例如
Delete from Db.tbl1;
Delete from Db.tbl2;
Delete from Db.tbl3;
Delete from Db.tbl4;
Delete from Db.tbl5;别在那个文件里放其他东西。让我们将这些文件命名为deletes.sql。现在,我们把这两行放在一起--两行:
mysql -u username -ppassword < E:\replication\DestinationTest\restore.sql
mysql -u username -ppassword < deletes.sqlPS:如果你只想删除所有行,TRUNCATE TABLE Db.tbl4;比DELETE运行得更快。
https://stackoverflow.com/questions/62900505
复制相似问题