2017-06-27 11 views
0

J'ai une application Node.JS qui est déployée avec Heroku avec un système CRUD simple. Cependant, j'ai des problèmes chaque fois que je mets à jour une ligne avec l'application web elle-même.Heroku Node.JS Erreur de base de données

Voici mon code pour l'instruction UPDATE dans mon server.js fichier

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

Alors est ici l'erreur montre dans mes journaux

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 } 

J'espère qu'il ya une solution pour celui-ci .

Un grand merci

Répondre

0

Pour ce que je sais, il existe des versions de MySQL qui ne fonctionnent pas si vous les envoyez un JSON comme vous faites avec data. Je ne sais pas vraiment ce qui ne va pas avec votre code mais, pour ce que je vois, votre code de nœud est correct.

je vous recommande d'essayer cette requête directement sur MySQL (en utilisant la console ou table de travail)

+0

Salut Rafael, je ne suis pas tout à fait sûr que la version MySQL que j'utilise avec Heroku est compatible avec le code que j'ai fait mais cela fonctionne parfaitement quand je le lance sur ma machine locale via WAMP. J'ai essayé d'interroger cela aussi sur MySQL Workbench et ça marche. –