我的旧CMS需要维护。现在这是一个(错误的)解决方案,但是有删除风险,因此我想修复控制台日志中的错误消息。实际上,错误仅显示在error.log中,并且仅对我来说是令人讨厌的……但也许这是一个简单的陈述。
所以我有一个menu
表并运行以下MySQL命令:
ALTER IGNORE TABLE `menu` ADD COLUMN `group_id` BIGINT not null default '1';
每次我登录CMS时都会运行一次。但关键是,我在error.log文件中收到了此错误消息:
DBD::mysql::db do failed: Duplicate column name 'group_id' at /var/www/...
更奇怪的是,我使用IGNORE
关键字来避免出现此消息,但仍然收到错误消息。 (无论如何,一切正常,但是我的error.log有很多这样的消息。)
我可以避免此消息吗?也许我可以以某种方式测试该字段在表上是否存在?
删除运行的SQL命令不是一个选择。
答案 0 :(得分:1)
我了解您可能有不同的DDL。如果是这种情况,我建议您有用于版本控制的表。通过使用此表,您每次拥有新的DDL / DML脚本时都可以拥有唯一的版本号。然后,您可以检查版本表中是否存在该版本号,如果不存在,则可以执行DDL脚本,然后需要在版本表中插入版本号。
BEGIN
DECLARE @version_number VARCHAR(30) DEFAULT 'V10298492';
DECLARE @VERSION_EXISTS INT ;
SELECT COUNT(*)
INTO @VERSION_EXISTS
FROM CMS_VERSION
WHERE VERSION_NUMBER = @version_number;
IF (@VERSION_EXISTS = 0)
RETURN;
END IF;
--DDL SCRIPT AFTER THIS POINT
...
--END OF DDL SCRIPT
INSERT INTO CMS_VERSION (VERSION_NUMBER)
VALUES (@version_number);
END;