Ошибка создания таблицы: «Операнд должен содержать 1 кулон»

0

Я проверил некоторые вопросы относительно этой ошибки, и большинство из них испытывают эту ошибку при использовании функции "SELECT", но в моем случае я использую CREATE TABLE IF NOT EXIST, но испытываю эту ошибку, вы можете проверить мой код, чтобы узнать, что вызывает ошибку, или если вы, ребята, знаете другой способ сделать то же самое.

Я хочу создать таблицу для ежегодного платежа на самом деле, который должен быть ежемесячным, но я стараюсь в этом году.

/* INSERT HERE THE LIST OF ALL EXISTING PAYMENT TABLES */
DROP TEMPORARY TABLE IF EXISTS T_distinctTable; 
CREATE TEMPORARY TABLE T_distinctTable (
ctr int PRIMARY KEY AUTO_INCREMENT NOT NULL, 
DisTable varchar (18)
);
INSERT INTO T_distinctTable (DisTable) 
SELECT TABLE_NAME from information_schema.tables WHERE TABLE_SCHEMA = 'cams' and TABLE_NAME like concat ('%','Payment_20','%');

SET @endYearTemp = (select count(*) from T_distinctTable); 

set @YearNow = (SELECT YEAR(CURDATE()));

set @TableName = concat('Payment_',@YearNow);

set @SQLTable = ('CREATE TABLE IF NOT EXISTS '', @TableName ,'' id int NOT NULL AUTO_INCREMENT, name CHAR(30),PRIMARY KEY (id)');
        SELECT @SQLTable;
        PREPARE stmt FROM @SQLTable;
        EXECUTE stmt;
Теги:

1 ответ

1
Лучший ответ

Используйте concat() для конкатенации строк. Ввод их в круглые скобки и их разделение запятыми не сделают этого. И вы забыли скобки вокруг определений столбцов CREATE TABLE.

...
set @SQLTable = concat('CREATE TABLE IF NOT EXISTS '', @TableName ,'' (id int NOT NULL AUTO_INCREMENT, name CHAR(30),PRIMARY KEY (id))');
        SELECT @SQLTable;
        PREPARE stmt FROM @SQLTable;
        EXECUTE stmt;
...
  • 0
    Спасибо! Я не заметил мою простую ошибку, думаю, мне нужно немного поспать, еще раз спасибо за помощь
  • 0
    Я думаю, что слишком поздно, я не могу удалить это прямо сейчас :(

Ещё вопросы

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