MySQL:ALTER IGNORE TABLE with DROP INDEX
问题描述:
我有很多数据库,并且在每个数据库中都有表names
。在一些我有唯一密钥命名为name1
和在其他人相同的唯一密钥命名为name2
。我想标准的这个名字,所以我准备3个查询到每个数据库上运行:MySQL:ALTER IGNORE TABLE with DROP INDEX
ALTER IGNORE TABLE `names`
DROP INDEX `name1`;
ALTER IGNORE TABLE `names`
DROP INDEX `name2`;
ALTER TABLE `names`
ADD UNIQUE `new_name` (`name`, `surname`);
但我得到的错误:
SQL Error (1091): Can't DROP 'name1'; check that column/key exists
我怎样才能让一组查询到每个数据库上运行?
答
您可以尝试,如果你在命令行中执行你的SQL脚本文件,忽略错误:
mysql -f -u username -p password -e 'source script.sql'
编辑
由于艾克,要做到这一点,正确的做法是:
mysql -f -u username -p password < script.sql
+1
事实上,如果存在多个错误,这将不起作用。它会在第一个错误后中止。忽略script.sql中错误的正确方法是:'mysql -f -u username -p password
+0
谢谢,我编辑了我的答案 – JamesHalsall 2011-03-10 16:33:38
那么问题是什么?如何忽略错误,或者如何在每个数据库中运行查询? – azat 2011-03-10 12:44:15