2010-04-24 4 views
14

Я получаю эту ошибку:MySQl Error # 1064

MySQL said: #1064 - 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 'INSERT INTO books.book(isbn10,isbn13,title,edition,author_f_name,author_m_na' at line 15

с этим запросом:

USE books; 

DROP TABLE IF EXISTS book; 


    CREATE TABLE `books`.`book`(
    `book_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `isbn10` VARCHAR(15) NOT NULL, 
    `isbn13` VARCHAR(15) NOT NULL, 
    `title` VARCHAR(50) NOT NULL, 
    `edition` VARCHAR(50) NOT NULL, 
    `author_f_name` VARCHAR(50) NOT NULL, 
    `author_m_name` VARCHAR(50) NOT NULL, 
    `author_l_name` VARCHAR(50) NOT NULL, 
    `cond` ENUM('as new','very good','good','fair','poor') NOT NULL, 
    `price` DECIMAL(8,2) NOT NULL, 
    `genre` VARCHAR(50) NOT NULL, 
    `quantity` INT NOT NULL) 

    INSERT INTO books.book(isbn10,isbn13,title,edition,author_f_name,author_m_name,author_l_name,cond,price,genre,quantity)** 
    VALUES ('0136061699','978-0136061694','Software Engineering: Theory and Practice','4','Shari','Lawrence','Pfleeger','very good','50','Computing','2'); 

Любая идея, что проблема?

+8

Не любите ли вы очень полезные сообщения об ошибках mySQL? Он возвращает этот старый таймер ко временам «IEH407I Probable Programmer Error», который был OS/360 для «э-э?»? –

+3

@ Олли, эти ошибки похожи на шипы на розе. – Anthony

+0

Кстати, в общем, смотрите также зарезервированные слова в именах таблиц или столбцов. Это была проблема, которая привела меня сюда для того же сообщения (потому что это было не «очевидное» зарезервированное слово). – atas

ответ

25

может быть, вы забыли добавить «;» после этой строки кода:

`quantity` INT NOT NULL) 
+7

+1 Ты был прав. Это сработало. Я устал. Спасибо – Anthony

+2

приветствую :) Побалуйте себя – Puaka

3

В моем случае я имел ту же ошибку, и позже я пришел, чтобы узнать, что «условие» является MySQL защищены и я использовал это как имя поля.

0

Иногда, когда ваша таблица имеет аналогичное имя для имени базы данных, вы должны использовать обратный тик. поэтому вместо того, чтобы:

INSERT INTO books.book(field1, field2) VALUES ('value1', 'value2'); 

Вы должны иметь это:

INSERT INTO `books`.`book`(`field1`, `field2`) VALUES ('value1', 'value2'); 
0

В первом вам нужно добавить с запятой (;) после quantity INT NOT NULL) затем удалить ** из ,genre,quantity)**. , чтобы вставить значение с числовым типом данных, таким как int, decimal, float и т. Д. Вам не нужно добавлять одиночную кавычку.