2017-06-27 7 views
0

Ich habe eine Node.JS-Anwendung, die mit Heroku mit einem einfachen CRUD-System bereitgestellt wird. Ich habe jedoch Probleme, wenn ich eine Zeile mit der Webanwendung selbst aktualisiere.Heroku Node.JS Datenbank Fehler

Hier ist mein Code für die UPDATE-Anweisung in meinem server.js Dann in meinen Logs hier

app.post('/logs/edit/:mobile', function(req, res){ 
    var input = JSON.parse(JSON.stringify(req.body)); 
    var mobile = req.params.mobile; 
    var data = {    
     last : input.last, 
     first : input.first, 
     middle : input.middle, 
     mobile : input.mobile, 
     email : input.email, 
     bday : input.bday, 
     status : input.status 
    }; 
    connection.query("UPDATE logs set ? WHERE mobile = ? ",[data,mobile], function(err, rows){ 
     if(err) console.log(err); 
     res.redirect('/logs');   
    }); 
}); 

Datei

der Fehler zeigt
2017-06-27T02:09:55.662620+00:00 app[web.1]: { 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 ''Doe', 'Doe', 'Doe', `first` = 'John', 'John', `middle` = 'Mike', 'Mike', `mobil' at line 1 
2017-06-27T02:09:55.662637+00:00 app[web.1]:  at Query.Sequence._packetToError (/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:48:14) 
2017-06-27T02:09:55.662639+00:00 app[web.1]:  at Query.ErrorPacket (/app/node_modules/mysql/lib/protocol/sequences/Query.js:83:18) 
2017-06-27T02:09:55.662640+00:00 app[web.1]:  at Protocol._parsePacket (/app/node_modules/mysql/lib/protocol/Protocol.js:280:23) 
2017-06-27T02:09:55.662641+00:00 app[web.1]:  at Parser.write (/app/node_modules/mysql/lib/protocol/Parser.js:73:12) 
2017-06-27T02:09:55.662642+00:00 app[web.1]:  at Protocol.write (/app/node_modules/mysql/lib/protocol/Protocol.js:39:16) 
2017-06-27T02:09:55.662642+00:00 app[web.1]:  at Socket.<anonymous> (/app/node_modules/mysql/lib/Connection.js:96:28) 
2017-06-27T02:09:55.662644+00:00 app[web.1]:  at emitOne (events.js:96:13) 
2017-06-27T02:09:55.662644+00:00 app[web.1]:  at Socket.emit (events.js:188:7) 
2017-06-27T02:09:55.662646+00:00 app[web.1]:  at readableAddChunk (_stream_readable.js:176:18) 
2017-06-27T02:09:55.662646+00:00 app[web.1]:  at Socket.Readable.push (_stream_readable.js:134:10) 
2017-06-27T02:09:55.662648+00:00 app[web.1]:  -------------------- 
2017-06-27T02:09:55.662648+00:00 app[web.1]:  at Protocol._enqueue (/app/node_modules/mysql/lib/protocol/Protocol.js:141:48) 
2017-06-27T02:09:55.662649+00:00 app[web.1]:  at Connection.query (/app/node_modules/mysql/lib/Connection.js:201:25) 
2017-06-27T02:09:55.662650+00:00 app[web.1]:  at /app/server.js:59:16 
2017-06-27T02:09:55.662650+00:00 app[web.1]:  at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 
2017-06-27T02:09:55.662651+00:00 app[web.1]:  at next (/app/node_modules/express/lib/router/route.js:131:13) 
2017-06-27T02:09:55.662652+00:00 app[web.1]:  at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3) 
2017-06-27T02:09:55.662653+00:00 app[web.1]:  at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 
2017-06-27T02:09:55.662653+00:00 app[web.1]:  at /app/node_modules/express/lib/router/index.js:277:22 
2017-06-27T02:09:55.662654+00:00 app[web.1]:  at param (/app/node_modules/express/lib/router/index.js:349:14) 
2017-06-27T02:09:55.662654+00:00 app[web.1]:  at param (/app/node_modules/express/lib/router/index.js:365:14) 
2017-06-27T02:09:55.662655+00:00 app[web.1]: code: 'ER_PARSE_ERROR', 
2017-06-27T02:09:55.662656+00:00 app[web.1]: errno: 1064, 
2017-06-27T02:09:55.662657+00:00 app[web.1]: sqlState: '42000', 
2017-06-27T02:09:55.662657+00:00 app[web.1]: index: 0 } 

Ich hoffe, es gibt eine Lösung für diese ein .

Vielen Dank

Antwort

0

Für das, was ich weiß, gibt es MySQL-Versionen, die, wenn man sie eine JSON senden wird nicht funktionieren, wie Sie mit data tun sind. Ich weiß eigentlich nicht, was mit deinem Code falsch ist, aber für das, was ich sehe, ist dein Node-Code in Ordnung.

Ich empfehle Sie, die Abfrage direkt auf mysql, um zu versuchen (von der Konsole oder Werkbank mit)

+0

Hallo Rafael, ich bin nicht ganz sicher, ob die MySQL-Version, die ich mit Heroku bin mit dem Code kompatibel ist das habe ich gemacht, aber es funktioniert perfekt, wenn ich es auf meinem lokalen Rechner über WAMP starte. Ich habe versucht, dies auch auf MySQL Workbench abzufragen und es funktioniert. –