【发布时间】:2018-01-09 12:08:23
【问题描述】:
我想在包含现有数据的表中添加一个非空列。我的工具集包括 MariaDb 和 flyway。这就是我正在做的事情
IF NOT EXISTS(SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'MY_DATA_TABLE'
AND table_schema = '${schemaName}'
AND column_name = 'NewColumnName'
) THEN
ALTER TABLE MY_DATA_TABLE ADD COLUMN 'NewColumnName' INT;
SELECT ID INTO @val FROM MASTER_TABLE WHERE lower(Name) = 'XYZ';
UPDATE MY_DATA_TABLE SET NewColumnName = @val;
ALTER TABLE MY_DATA_TABLE MODIFY COLUMN 'NewColumnName' INT NOT NULL;
END IF;
执行mvn flyway:migrate 会给我这个错误
[ERROR] SQL State : 42000
[ERROR] Error Code : 1064
[ERROR] Message : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''NewColumnName'
INT' at line 7
我什至尝试在其中放置一些正在运行的 select 语句,但错误仍然存在。请提出一些解决方法。如果还有其他方法可以实现目标,还请推荐。 谢谢!
【问题讨论】:
-
你不能使用这样的 SQL 代码..
IF NOT EXISTS(SELECT 1) END IF;是无效的 SQL。 -
@RaymondNijland 有没有提到正确的方法?