2010-09-30 35 views
-1
INSERT into error_log 
    (id_user, id_error, severity, date) 
VALUES 
    ('93, '1', '6', '1285886665') 

投擲MySQL的語法錯誤

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1', '6', '1285886794')' at line 4 

CREATE TABLE `error_log` (
    `id` int(25) NOT NULL auto_increment, 
    `id_user` int(25) NOT NULL, 
    `id_error` int(5) NOT NULL, 
    `severity` int(2) NOT NULL, 
    `date` varchar(50) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 
+3

'('93,'錯過了一個結束語,考慮一個SQL突出顯示的編輯器,那麼你會立即發現它 – Wrikken 2010-09-30 22:54:30

+2

也想拋出那裏,技術上日期是一個保​​留字通常mysql會大聲對你除非你用backtics包裝保留字,但是date是其中一個例外,但是你永遠不知道它是否會在將來發生變化並且是必需的,而且一般來說只是命名列保留字是不好的做法,所以你可能想改變那個列名到其他的東西,比如error_date或者其他東西。 – 2010-09-30 22:59:30

回答

4

用途:

INSERT into error_log 
(id_user, id_error, severity, `date`) 
VALUES 
(93, 1, 6, '1285886665') 

的問題是對id_user值未封閉的單引號。
文本值需要用單引號引起來,例如date列。但是INTeger不需要用單引號包裝,儘管MySQL會隱式地將數據類型轉換爲列的內容......否則會引發錯誤。