Mysql错误1136

时间:2016-05-29 10:28:14

标签: mysql sql mysql-error-1136

我已经阅读了错误。它表示sql传递的值多于/少于table指定的值。但我的表有7列,我发送7个参数,但仍然得到错误。请帮忙

Books_out_on_loan

DROP TABLE IF EXISTS `books_out_on_loan`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `books_out_on_loan` (
  `book_borrow_id` int(11) NOT NULL,
  `member_id` int(11) NOT NULL,
  `employee_id` int(11) NOT NULL,
  `isbn` varchar(13) NOT NULL,
  `date_issued` datetime NOT NULL,
  `date_due` datetime NOT NULL,
  `date_returned` datetime DEFAULT NULL,
  PRIMARY KEY (`book_borrow_id`),
  UNIQUE KEY `book_borrow_id_UNIQUE` (`book_borrow_id`),
  KEY `member_id_idx` (`member_id`),
  KEY `employee_id_idx` (`employee_id`),
  KEY `isbn_idx` (`isbn`),
  CONSTRAINT `employee_id` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_number`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `isbn-book-loan` FOREIGN KEY (`isbn`) REFERENCES `books` (`ISBN`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `member_id` FOREIGN KEY (`member_id`) REFERENCES `members` (`member_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SQL FILE:

INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('1','1','1','863758832-8','20160529','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('2','2','2','278860648-6','20160521','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('3','3','3','012454099-6','20160520','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('4','4','4','553185783-7','20160510','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('5','5','5','711473445-X','2016059','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('6','1','6','830664326-7','2016058','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('7','2','7','555264867-6','20160510','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('8','3','8','607119764-3','20160512','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('9','4','9','893613484-1','20160514','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('10','5','10','826004987-2','20160515','20160606',NULL);

SQL小提琴,带有工作插入: http://sqlfiddle.com/#!9/cbcc1

3 个答案:

答案 0 :(得分:2)

如果在目标表上有任何触发器如AFTER INSERT,并且此触发器存在问题,则会出现此1136错误,该错误实际上属于此触发器操作。这是一个古老的话题,但检查这些将是有用的。

答案 1 :(得分:0)

尝试在每个varchar值之前放置N并执行查询,如下所示:N' 863758832-8' (这是您的ISBN之一)。这意味着将您的字符串转换为Unicode,我认为这会有所帮助。

而且Refer to this link有一个解释。如果这不起作用,您也可以尝试将ISBN列从13增加到20。因为连字符将被视为多个字符,这主要发生在UTF-8编码中。

答案 2 :(得分:0)

您在这些插页上有数据截断,这可能会导致问题,我已在此处更正了

INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('5','5','5','711473445-X','20160509','20160606',NULL);
INSERT INTO books_out_on_loan (book_borrow_id,member_id,employee_id,isbn,date_issued,date_due,date_returned)VALUES ('6','1','6','830664326-7','20160508','20160606',NULL);
相关问题