2012-08-07 33 views
0

可能重复:
MySQL: How to add a column if it doesn't already exist?的MySQL是否存在返回错误

我用的工具是运行此查询,但它的失败。我试图帮助调试,但无法弄清楚什么是错误的:

IF EXISTS(SELECT NULL FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'TOWNY_RESIDENTS' 
AND table_schema = 'minecraft' 
AND column_name != 'town-ranks') 
THEN 
ALTER TABLE TOWNY_RESIDENTS (ADD 
`town-ranks` mediumtext, 
`nation-ranks` mediumtext 
); 

内部选择查询工作正常。看来如果存在的语法是错误的,但我不知道如何。在网站上的例子,像这样表现出类似的想法...

的错误是:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS(SELECT NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'TOW' at line 1 

回答

0

ALTER TABLE不支持IF EXISTS在MySQL。您可以运行您的ALTER TABLE语句并忽略产生的错误。

另一种选择是在information_schema上执行SELECT INTO OUTFILE以根据需要生成ALTER TABLE语句,然后源文件执行ALTER TABLE语句。

+0

是否有任何查询唯一的解决方案来检查?我们可以在不检查的情况下运行alter,或者SHOW COLUMNS并解析字段的输出,但我只是覆盖我的基础。 – helion3 2012-08-07 16:53:03

+0

因为即使这样也行不通:IF NOT EXISTS((SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name ='TOWNY_RESIDENTS'))然后从TOWNY_RESIDENTS中选择1; – helion3 2012-08-07 16:59:33

+0

有几十个mysql线程表明alter table可以正常工作,if存在... – helion3 2012-08-07 17:00:06