2016-05-29 47 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錯誤。這是一個古老的話題,但檢查這些將是有益的。