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 

我怎样才能让一组查询到每个数据库上运行?

+0

那么问题是什么?如何忽略错误,或者如何在每个数据库中运行查询? – azat 2011-03-10 12:44:15

您可以尝试,如果你在命令行中执行你的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 2011-03-10 15:26:51

+0

谢谢,我编辑了我的答案 – JamesHalsall 2011-03-10 16:33:38