2016-05-29 50 views
1

我已阅读错误。它说,sql传递的值比表中指定的更多/更少。但我的表有7列,我发送7个参数,但仍然出现错误。请帮助Mysql错误1136

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文件:

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

+0

我很确定它是这里的问题的ISBN;如果你删除'-',会发生什么? – cybermonkey

+0

删除连字符。没有运气 –

回答

0

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

Refer to this link有对此的解释。如果这不起作用,你也会尝试将ISBN列从13增加到20。由于连字符将被视为多个字符,主要发生在UTF-8编码上。

+0

在varchar之前放置N没有运气。还增加了字段大小,但没有运气 –

+0

@RenierSwart你的数据没有问题。你的约束有问题。我在我的MySQL上创建了相同的表格,并且执行插入操作时没有任何问题。当然,我没有外键,因为我没有你的完整的数据库:) – fstafai

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); 
+0

建议后仍然显示相同的错误 –

2

如果您有任何触发器像上目标表,如果插入操作后有问题用这个触发器,你将会有这个实际属于这个触发器动作的1136错误。这是一个古老的话题,但检查这些将是有益的。