Я использую node.js и mysql. Я пытаюсь вставить несколько строк с одним запросом, и если строки с этим первичным ключом уже существуют, обновите его.
PK is exchange + currency1 + currency2
.
Но вставляется только одна строка (вместо пяти).
Вот мой valuesArray
:
[ [ 4, 'BTC', 'IDR', 10440000, 10391000 ],
[ 4, 'BTC', 'MYR', 2380, 2095 ],
[ 4, 'BTC', 'ZAR', 11216, 11201 ],
[ 4, 'BTC', 'SGD', 1100, 1093 ],
[ 4, 'BTC', 'NGN', 403500, 402701 ] ]
и вот мой запрос:
connection.query("INSERT INTO rates (exchange,currency1,currency2,buyrate,sellrate) VALUES(?) ON DUPLICATE KEY UPDATE buyrate=VALUES(buyrate), sellrate=VALUES(sellrate)", valuesArray, function (err) {
});
Я попытался изменить свой запрос на это (просто добавив [ ] вокруг valuesArray):
connection.query("INSERT INTO rates (exchange,currency1,currency2,buyrate,sellrate) VALUES(?) ON DUPLICATE KEY UPDATE buyrate=VALUES(buyrate), sellrate=VALUES(sellrate)", [valuesArray], function (err) {
});
но затем я получаю эту ошибку:
{ [Error: ER_OPERAND_COLUMNS: Operand should contain 1 column(s)]
code: 'ER_OPERAND_COLUMNS',
errno: 1241,
sqlState: '21000',
index: 0 }
...VALUES ? ON DUPLICATE...
(без скобок) и[valuesArray]
(со скобками). - person Solarflare   schedule 09.12.2016