2010-04-24 9 views
14

Ich erhalte diese Fehler: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

mit dieser Abfrage:

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'); 

Jede Idee, was das Problem ist?

+8

Lieben Sie die super-hilfreichen mySQL-Fehlermeldungen nicht? Es bringt diesen Oldtimer zurück zu den Tagen von "IEH407I Probable Programmer Error", die OS/360 für "eh?" –

+3

@Ollie, diese Fehler sind wie die Dornen auf einer Rose. – Anthony

+0

Übrigens, achten Sie im Allgemeinen auch auf reservierte Wörter in Ihren Tabellen- oder Spaltennamen. Dies war das Problem, das mich hierher gebracht hat, um die gleiche Nachricht zu erhalten (weil es kein "offensichtliches" reserviertes Wort war). – atas

Antwort

25

vielleicht vergessen hat „;“ nach dieser Codezeile hinzuzufügen:

`quantity` INT NOT NULL) 
+7

+1 Sie hatten Recht. Es funktionierte. Ich bin müde. Vielen Dank – Anthony

+2

Sie sind willkommen :) etwas Ruhe – Puaka

3

In meinem Fall war ich die gleichen Fehler aufweisen und später komme ich zu wissen, dass der ‚Zustand‘ mysql reserviert Stichwort und ich habe das als Feldname verwendet.

0

Manchmal, wenn Ihre Tabelle einen ähnlichen Namen wie der Datenbankname hat, sollten Sie Back-Tick verwenden. so statt:

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

Sie sollten dies haben:

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

Zuerst müssen Sie Semikolon hinzufügen (;) nach quantity INT NOT NULL) dann entfernen ** aus ,genre,quantity)**. Um einen Wert mit numerischem Datentyp wie int, dezimal, float usw. einzufügen, müssen Sie kein einzelnes Anführungszeichen hinzufügen.