mysql - 创建表不存在错误“操作数应包含 1 个列”
问题描述
我检查了有关此错误的一些问题,其中大部分在使用“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;
解决方案
用于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;
...
推荐阅读
- c# - 子声明缺少带有 Mongo DB 的 Identity Server 4
- python - 如何在 python 中存根 S3Transfer
- r - R:逐行加速大型矩阵的 na.approx
- c++ - 为什么我不能使用 labmda 作为非类型模板参数?
- java - Java中所有字符大写并在每个字符之间添加空格的递归方法
- reactjs - 仍然没有解决 reactjs sass 安装过程
- java - 我想添加我的实时 firebase 数据库中的值
- c# - 多个 HTTP 请求触发 HTTP Client 超时
- c# - 如何禁用对 DataGrid 的特定(最后)列的重新排序?
- javascript - Firebase 身份验证 onAuthStateChanged 在函数体后响应