Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 存储过程试图插入到两个表中:错误1136_Mysql_Stored Procedures_Mysql Error 1136 - Fatal编程技术网

Mysql 存储过程试图插入到两个表中:错误1136

Mysql 存储过程试图插入到两个表中:错误1136,mysql,stored-procedures,mysql-error-1136,Mysql,Stored Procedures,Mysql Error 1136,我试图让这个程序在两个不同的表中添加一个新行:bilde和student。 bilde中输入的值应来自student中使用的值 在这一点上,我得到了这个消息:错误代码:1136。列计数与第1行的值不匹配,我不太确定如何解决这个问题 DELIMITER $$ DROP PROCEDURE IF EXISTS NyStudent $$ CREATE PROCEDURE NyStudent ( brukernavn VARCHAR(45)

我试图让这个程序在两个不同的表中添加一个新行:bilde和student。 bilde中输入的值应来自student中使用的值

在这一点上,我得到了这个消息:错误代码:1136。列计数与第1行的值不匹配,我不太确定如何解决这个问题

DELIMITER $$ 
DROP PROCEDURE IF EXISTS NyStudent $$

CREATE PROCEDURE NyStudent (
                        brukernavn VARCHAR(45)
                        ,fornavn VARCHAR(45)
                        ,etternavn VARCHAR(45)
                        ,klassekode INT
                        )

BEGIN
    START TRANSACTION;
    INSERT INTO bilde (filnavn, beskrivelse)
        VALUES (CONCAT('bilder/', fornavn, '.jpg'), CONCAT('bilde av ', fornavn, ' ', etternavn));
    INSERT INTO student
        VALUES ('donaldduck','donald','duck','1');
    COMMIT;
END$$ 

DELIMITER ;
CALL NyStudent('donaldduck','donald','duck','1');

尝试为学生在“INSERT INTO”语句中添加列名,因为这应该是列计数错误的主要原因


此外,即使我们为表的每一列插入值,最好的做法是在insert INTO语句之后包含列名。遵循这一点可以在一定程度上避免代码中的任何中断,即使在将来的架构更改中也是如此。

尝试在学生的“INSERT INTO”语句中添加列名,因为这应该是列计数错误的主要原因。如果不起作用,请共享bilde和student表的模式,以便我们了解其中存在的数据类型和列名。首先,在不使用存储过程的情况下进行简单的插入。@sabharikarthik Thank的“我让它起作用了”,忽略了“insert-INTO*语句”。因此,我会将注释作为答案发布,因为这会帮助其他人。