Mysql ОШИБКА 1054 (42S22) Неизвестный столбец в «где предложение» Проверка, существует ли столбец

0
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, бросая ошибку для наличия недостающего значения в моем запросе выбора?

  • 0
    Я голосую, чтобы закрыть это как не по теме, вызванное простой опечаткой, потому что вы использовали неправильные кавычки вокруг bid_log и, следовательно, сказали парсеру, что это имя объекта, а не строковая константа.
  • 0
    @underscore_d Итак, вы говорите, что нет способа избежать имени таблицы, используемой внутри инструкции ALTER , которая находится внутри блока IF ?
Показать ещё 7 комментариев
Теги:

1 ответ

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

В таблице схемы имя_таблицы и имя_кода хранятся как строковые значения, поэтому их следует сравнивать с идентификаторами строк, а не с идентификаторами объектов.

Спасибо за ответ underscore_d за ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню