J'ai la requête suivante donc je peux copier quelques lignes dans la même table:Sails.js/Waterline des requêtes SQL signale une erreur de syntaxe quand il semble y avoir aucune erreur
START TRANSACTION;
CREATE TEMPORARY TABLE IF NOT EXISTS copy AS SELECT * FROM table WHERE table.field= 'foo';
UPDATE copy SET copy.field = REPLACE(copy.field, 'foo', 'bar');
SELECT @id := MAX(table.uid) AS uid FROM table;
UPDATE copy SET copy.uid = (@id:[email protected]+1);
INSERT INTO table SELECT * FROM copy;
COMMIT;
Cela fonctionne parfaitement établi MySQL . J'ai alors couru la requête par Sails.js (en utilisant les voiles-mysql adaptateur) mais je reçois l'erreur:
{ 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 'CREATE TEMPORARY TABLE IF NOT EXISTS copy AS SELECT * FROM table WH' at line 1
J'ai consigné la requête à la console et il semble bien. Pourquoi cela arriverait-il?
est ici le code de voiles:
copyTo: function (req, res) {
var from = req.param('from', '');
var to = req.param('to', '');
if (from === '' || to === '') {
res.send('from and to are required');
}
var query = 'START TRANSACTION; CREATE TEMPORARY TABLE IF NOT EXISTS copy AS SELECT * FROM table WHERE table.field = \'' + from + '\'; UPDATE copy SET copy.field = REPLACE(copy.field, \'' + from + '\', \'' + to + '\'); SELECT @id := MAX(table.uid) AS uid FROM table; UPDATE copy SET copy.uid = (@id:[email protected]+1); INSERT INTO table SELECT * FROM copy; COMMIT;';
Model.query(query, function (err, items) {
if (err) {
console.log(err);
res.send(400);
} else {
res.send('ok');
}
});
},
Le résultat est essentiellement une copie de la table temporaire réinsérés dans la table d'origine, avec la propriété sur le terrain a changé
Pouvez-vous envoyer votre code Sails.js et le résultat de la requête connecté? – riza
@riza a ajouté le code – anthozep
[mysql-doc] (https://dev.mysql.com/doc/refman/5.7/fr/stored-programs-defining.html), essayez d'envelopper la requête dans quelque chose comme 'DELIMITER + \ n {votre-sql-ici} \ n + ' – birdspider