mysql - MYSQL - 错误 1048 (23000): 列不能为空
问题描述
我有一个表,我创建了一个 SP 来将数据插入其中。
当我运行 SP 时,我得到主题中的错误,如果我使用相同的数据运行手动插入,这将按预期工作。
手动插入工作
INSERT INTO Leagues (LeagueName, PlatformID, GameID, ActiveStatus, Admin, PointsSys)
VALUES ('LeagueName', 1, 1, 'Active', 'Test', 1);
调用 SP 不 - 返回错误 'ERROR 1048 (23000): Column \'LeagueName\' cannot be null'
CALL `tmddg-data`.`SP_CreateLeague`('LeagueName', 1, 1, 'Active', 'Test', 1)
创建表
CREATE TABLE `Leagues` (
`LeagueID` int(11) NOT NULL AUTO_INCREMENT,
`LeagueName` text NOT NULL,
`PlatformID` int(11) NOT NULL,
`GameID` int(11) NOT NULL,
`ActiveStatus` text NOT NULL,
`Admin` varchar(45) NOT NULL,
`PointsSys` int(11) DEFAULT '1',
PRIMARY KEY (`LeagueID`),
UNIQUE KEY `LeagueID_UNIQUE` (`LeagueID`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
创建 SP
DELIMITER $$
CREATE PROCEDURE `SP_CreateLeague`(
LN TEXT,
PID INT,
GID INT,
ASt TEXT,
ADM VARCHAR(45),
PS INT)
BEGIN
DECLARE exit handler for SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE,
@errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text);
SELECT @full_error;
END;
INSERT INTO Leagues (LeagueName, PlatformID, GameID, ActiveStatus, Admin, PointsSys)
VALUES ( @LN, @PID, @GID, @ASt, @ADM, @PS);
END$$
DELIMITER ;
解决方案
删除子句@
中的 s 。VALUES
...
INSERT INTO ...
VALUES (LN,
PID,
GID,
ASt,
ADM,
PS);
...
推荐阅读
- arrays - 没有空引用异常,无法获取空数组的长度
- python - 当我们在 python 中从列表转换为集合时会发生什么?
- python - Python:如何对未标记的图像进行分类并保存到类文件夹中?
- xcode - 我升级到“Xcode 11 Beta 3”,它只引入“Create ML”(版本 1),没有显示“活动”分类器模型?
- c++ - .erase() 和 .size() 在这段代码中做了什么?
- php - 使用 PHP 进行 MySQL 搜索
- fortran - 错误:Cygwin/gfortran 中的续行错误
- javascript - Webpack4 npm start Uncaught TypeError
- python - 如何遍历隐藏的 div 并抓取文本?
- c++ - 它是一个“x”,它漂浮在输出屏幕上并实时移动