2013-11-15 8 views
5

Wygląda na to, że powinno być super łatwe, a ja utknąłem przez około dwie godziny. Cztery oddzielne osoby patrzyły i nie znajdowały oczywistego problemu. Ponownie zwracam się do społeczności SO.INSERT INTO error with mysql-node

Prawdziwe proste - Po prostu próbuję wstawić dane w bazie danych mysql za pośrednictwem węzła mysql. Nie otrzymuję żadnych błędów połączenia, a SELECT działa dobrze. Kod używany jest:

exports.postNewCast = function(data, res) { 
    var query = "INSERT INTO cast (name, portrait, role, bio) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');"; 
    console.log(query); 
    dbConnection.query(query, data, function(err, result) { 
    if (err) { 
     console.log(err); 
    } else { 
     sendResponse(res, "Cast Member Added", 201); 
    } 
    }); 
}; 

Błąd jest rejestrowane jest:

{ [Error: ER_PARSE_ERROR: 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 'cast (name, portrait, role, bio) VALUES ('Jessie', 'images/cast/marissa.jpg', 'L' at line 1] 
    code: 'ER_PARSE_ERROR', 
    errno: 1064, 
    sqlState: '42000', 
    index: 0 } 

Upiorna część (dla mnie) jest to, że mogę skopiować z mojego okna terminala (jeśli serwer jest uruchomiony) console.logged ciąg zapytania i wklej go do wiersza poleceń mysql, i działa dobrze. Próbowałem użyć GRANT, aby upewnić się, że serwer użytkownika działa, ma uprawnienia, a to nie działało. Próbowałem skopiować/wkleić INSERT INTO składnię bezpośrednio ze źródeł roboczych i tylko zastępując moje pola specyficzne dla danych. Próbowałem używać VALUES? opcję, a następnie obiekt danych i uzyskał taki sam wynik.

Więc jaki głupi błąd popełniam?

Dzięki.

+5

dodać 'dookoła nazwy tabeli, np.' \ 'Cast \ '' –

+1

Back ticks to było. Myślałem, że masz na myśli pojedyncze cytaty, i to nie działało. Ale cofnęły się kleszcze. – DrHall

Odpowiedz

7

Ilya Bursov miała ona poprawna, dodając tę ​​odpowiedź dla potomności. Nie jestem pewien, czy "cast" jest zastrzeżonym słowem lub czym, ale potrzebowałem tyknięć ("` ") wokół nazwy tabeli, aby działało.

1

Spróbuj umieścić `wokół każdej nazwy kolumny jak to

"INSERT INTO cast (`name`, `portrait`, `role`, `bio`) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');"; 
Powiązane problemy