Создать таблицу не существует ошибка "Операнд должен содержать 1 coulmns" - PullRequest
0 голосов
/ 21 мая 2018

Я проверил несколько вопросов, касающихся этой ошибки, и большинство из них испытывают эту ошибку при использовании функции «SELECT», но в моем случае я использую CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ, но испытываю эту ошибку, вы можете проверить мой код, чтобы увидеть, что вызываетошибка или если вы, ребята, знаете другой способ сделать то же самое.

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

/* 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 Ответ

0 голосов
/ 21 мая 2018

Используйте 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;
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...