Mysql ERROR 1054(42S22)' where子句'中的未知列检查列是否存在

时间:2018-04-06 14:31:27

标签: mysql

DROP PROCEDURE IF EXISTS update_migration;

DELIMITER //

CREATE PROCEDURE update_migration ()
BEGIN    

IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = `bid_log` AND COLUMN_NAME = `Paid` ) THEN
    ALTER TABLE `bid_log`  ADD `Paid` INT NULL;
END IF; 

END //

DELIMITER ;

我使用模式表中的SELECT 1来检查列是否存在,但是如果列不存在,我会收到此错误:

ERROR 1054 (42S22) at line 1: Unknown column 'bid_log' in 'where clause'

如何在没有mysql的情况下检查现有列是否因为在我的选择查询中缺少值而引发错误?

1 个答案:

答案 0 :(得分:0)

SELECT 1 FROM information_schema.columns WHERE table_name = 'bid_log' AND COLUMN_NAME = 'Paid' 

在架构表中,table_name和col_name存储为字符串值,因此必须将它们与字符串标识符而不是对象标识符进行比较。

感谢underscore_d的回答