I 다음 쿼리는 내가 같은 테이블에 일부 행을 복사 할 수 있습니다Sails.js/워터 원시 SQL 쿼리 구문 오류를보고
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;
이 MySQL의 워크 벤치에서 완벽하게 작동 . 나는 그 (돛-MySQL의 어댑터 사용) Sails.js를 통해 쿼리를 실행하지만 오류 얻을 :
{ 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
내가 콘솔에 쿼리를 기록했습니다를하고 그것을 잘 보인다. 왜 이런 일이 일어 났을까요? 여기
는 돛 코드입니다 :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');
}
});
},
결과 기본적으로 필드 속성을 원래 테이블에 다시 삽입 임시 테이블의 복사본이 변경됩니다
당신이 당신의 Sails.js 코드와 기록 쿼리 결과를 게시 할 수 있습니까? – riza
@riza가 – anthozep
[mysql-doc] (https://dev.mysql.com/doc/refman/5.7/en/stored-programs-defining.html) 코드를 추가 한 경우 쿼리를 'DELIMITER + \ n {your-sql-here} \ n +' – birdspider