2013-11-15 10 views
5

Sembra che dovrebbe essere semplicissimo, e sono rimasto bloccato per circa due ore. Quattro persone separate hanno guardato e non hanno trovato un problema ovvio. Quindi di nuovo mi rivolgo alla comunità SO.INSERISCI IN ERRORE con il nodo mysql

Real simple - Sto solo cercando di inserire i dati in un database mysql tramite mysql-node. Non ricevo errori di connessione e SELECT funziona perfettamente. Il codice utilizzato è:

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

L'errore in fase di login è:

{ [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 } 

La parte strana (per me) è che posso copiare dalla mia finestra di terminale (in cui il server è in esecuzione) la console.logged query string, e lo incolla nella riga di comando mysql, e funziona bene. Ho provato a utilizzare GRANT per assicurarmi che il server dell'utente sia in esecuzione con le autorizzazioni e questo non ha fatto nulla. Ho provato a copiare/incollare la sintassi INSERT INTO direttamente dalle origini di lavoro e solo sostituendo i miei campi specifici dei dati. Ho provato a usare i VALORI? opzione, seguito da un oggetto dati e ottenuto lo stesso risultato.

Quindi che stupido errore sto facendo?

Grazie.

+5

aggiungi 'attorno al nome della tabella, come' \ 'cast \' ' –

+1

I tick posteriori erano. Pensavo che intendessi virgolette singole e non funzionava. Ma le zecche posteriori lo hanno fatto. – DrHall

risposta

7

Ilya Bursov aveva corretto, l'aggiunta di questa risposta per i posteri. Non sono sicuro che 'cast' sia una parola riservata o cosa, ma avevo bisogno di back ticks ("` ") attorno al nome della tabella per farlo funzionare.

1

Prova a mettere `` attorno ad ogni nome di colonna come questo

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