简体   繁体   中英

#1136 - Column count doesn't match value count at row 1 , but query is well written

I'm trying to run this query, but it keeps trowing me this error, this is the table.

    CREATE TABLE IF NOT EXISTS `mdl_badge_issued` (
    `id` bigint(10) NOT NULL AUTO_INCREMENT,
    `badgeid` bigint(10) NOT NULL DEFAULT '0',
    `userid` bigint(10) NOT NULL DEFAULT '0',
    `uniquehash` longtext NOT NULL,
    `dateissued` bigint(10) NOT NULL DEFAULT '0',
    `dateexpire` bigint(10) DEFAULT NULL,
    `visible` tinyint(1) NOT NULL DEFAULT '0',
    `issuernotified` bigint(10) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `mdl_badgissu_baduse_uix` (`badgeid`,`userid`),
    KEY `mdl_badgissu_bad_ix` (`badgeid`),
    KEY `mdl_badgissu_use_ix` (`userid`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Defines issued badges' AUTO_INCREMENT=14 ;

And this is the insert i'm trying to run.

INSERT INTO `mdl_badge_issued` (`badgeid`, `userid`, `uniquehash`, 
                                `dateissued`, `dateexpire`, `visible`, 
                                `issuernotified`)
    VALUES ('47', '941', 'e6c997d04x844g59d3f9e00694e266a9c2ec7a68', 
            '1436967929', NULL, '1',
            NULL);

I been trying to execute this through phpmyadmin and a php script, but it keeps trowing me that error.

MOD:

I forgot to specify that i have a trigger for this table, which is a bit long.

   DELIMITER //

   CREATE TRIGGER certificate_enrol AFTER INSERT ON mdl_badge_issued

   FOR EACH ROW

BEGIN
    DECLARE user INT;
    DECLARE profile_data VARCHAR(100);
    DECLARE today INT;

    DECLARE contextID INT;
    SET user = NEW.userid;
    SELECT UNIX_TIMESTAMP(NOW()) INTO today;

    SELECT userp.data INTO profile_data FROM mdl_user AS user2 JOIN mdl_user_info_data AS userp ON user2.id = userp.userid WHERE userp.fieldid = 4 AND user2.id = user;

    IF profile_data LIKE 'Distribuidor%' AND NEW.badgeid = 44 THEN
        SELECT id INTO contextID from mdl_context where instanceid = 88 AND contextlevel = 50;
        INSERT INTO mdl_user_enrolments(enrolid,userid,modifierid,timestart,timeend,timecreated,timemodified) VALUES(344,user,1,today,0,today,today) on DUPLICATE KEY UPDATE enrolid=344, userid=user, modifierid=1, timestart=today, timeend=0, timemodified=today;

        INSERT INTO mdl_role_assignments(roleid,contextid,userid,timemodified,modifierid) VALUES(5,contextID,user,today,1,today,today) on DUPLICATE KEY UPDATE roleid=5, contextid=contextID, userid=user, timemodified=today, modifierid=user;

    ELSEIF profile_data LIKE 'Distribuidor%' AND NEW.badgeid = 45 THEN
        SELECT id INTO contextID from mdl_context where instanceid = 90 AND contextlevel = 50;
        INSERT INTO mdl_user_enrolments(enrolid,userid,modifierid,timestart,timeend,timecreated,timemodified) VALUES(350,user,1,today,0,today,today) on DUPLICATE KEY UPDATE enrolid=350, userid=user, modifierid=1, timestart=today, timeend=0, timemodified=today;

        INSERT INTO mdl_role_assignments(roleid,contextid,userid,timemodified,modifierid) VALUES(5,contextID,user,today,1,today,today) on DUPLICATE KEY UPDATE roleid=5, contextid=contextID, userid=user, timemodified=today, modifierid=user;

    ELSEIF profile_data LIKE 'Distribuidor%' AND NEW.badgeid = 47 THEN
        SELECT id INTO contextID from mdl_context where instanceid = 92 AND contextlevel = 50;
        INSERT INTO mdl_user_enrolments(enrolid,userid,modifierid,timestart,timeend,timecreated,timemodified) VALUES(356,user,1,today,0,today,today) on DUPLICATE KEY UPDATE enrolid=356, userid=user, modifierid=1, timestart=today, timeend=0, timemodified=today;

        INSERT INTO mdl_role_assignments(roleid,contextid,userid,timemodified,modifierid) VALUES(5,contextID,user,today,1,today,today) on DUPLICATE KEY UPDATE roleid=5, contextid=contextID, userid=user, timemodified=today, modifierid=user;



    ELSEIF profile_data LIKE 'Usuario%' AND NEW.badgeid = 22 THEN
        SELECT id INTO contextID from mdl_context where instanceid = 89 AND contextlevel = 50;
        INSERT INTO mdl_user_enrolments(enrolid,userid,modifierid,timestart,timeend,timecreated,timemodified) VALUES(347,user,1,today,0,today,today) on DUPLICATE KEY UPDATE enrolid=347, userid=user, modifierid=1, timestart=today, timeend=0, timemodified=today;

        INSERT INTO mdl_role_assignments(roleid,contextid,userid,timemodified,modifierid,timecreated) VALUES(5,contextID,user,today,1,today) on DUPLICATE KEY UPDATE roleid=5, contextid=contextID, userid=user, timemodified=today, modifierid=user;

    ELSEIF profile_data LIKE 'Usuario%' AND NEW.badgeid = 46 THEN
        SELECT id INTO contextID from mdl_context where instanceid = 91 AND contextlevel = 50;
        INSERT INTO mdl_user_enrolments(enrolid,userid,modifierid,timestart,timeend,timecreated,timemodified) VALUES(353,user,1,today,0,today,today) on DUPLICATE KEY UPDATE enrolid=353, userid=user, modifierid=1, timestart=today, timeend=0, timemodified=today;

        INSERT INTO mdl_role_assignments(roleid,contextid,userid,timemodified,modifierid,timecreated) VALUES(5,contextID,user,today,1,today) on DUPLICATE KEY UPDATE roleid=5, contextid=contextID, userid=user, timemodified=today, modifierid=user;

    ELSEIF profile_data LIKE 'Usuario%' AND NEW.badgeid = 48 THEN
        SELECT id INTO contextID from mdl_context where instanceid = 93 AND contextlevel = 50;
        INSERT INTO mdl_user_enrolments(enrolid,userid,modifierid,timestart,timeend,timecreated,timemodified) VALUES(359,user,1,today,0,today,today) on DUPLICATE KEY UPDATE enrolid=359, userid=user, modifierid=1, timestart=today, timeend=0, timemodified=today;

        INSERT INTO mdl_role_assignments(roleid,contextid,userid,timemodified,modifierid,timecreated) VALUES(5,contextID,user,today,1,today) on DUPLICATE KEY UPDATE roleid=5, contextid=contextID, userid=user, timemodified=today, modifierid=user;

    END IF;

END;//

DELIMITER ;

Thanks for the comments, i just got the solution there was a mismatch in the trigger which involved this table, in every insert on the mdl_role_assignments table.

  INSERT INTO mdl_role_assignments(roleid,contextid,userid,timemodified,modifierid) VALUES(5,contextID,user,today,1,today,today) on DUPLICATE KEY UPDATE roleid=5, contextid=contextID, userid=user, timemodified=today, modifierid=user;

Anyways thanks Russell i'm going to review the events content.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM