programing

대량으로 준비된 문을 삽입하는 동안 JavaScript MySQL 오류가 발생했습니다.

iphone6s 2023. 8. 5. 09:58
반응형

대량으로 준비된 문을 삽입하는 동안 JavaScript MySQL 오류가 발생했습니다.

문제가 있어요.준비된 대량 명령문을 사용하여 데이터베이스에 수백 개의 개체를 삽입하려고 합니다.삽입하려는 표는 다음과 같습니다.

그러면 다음 코드가 있습니다.

static save() {
    data = [[1, '', '', 0, 0, 0, 0, 0], [2, '', '', 0, 0, 0, 0, 0], [3, '', '', 0, 0, 0, 0, 0], [4, '', '', 0, 0, 0, 0, 0]];
    let sql = "INSERT INTO Candlestick (openTime, market, `interval`, open, high, low, close, volume) VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
    return db.execute(sql, [data]);
}

그러나 이 결과 다음과 같은 출력이 출력됩니다.

Error: Incorrect arguments to mysqld_stmt_execute
    at PromisePool.execute (C:\Users\Alexander\Projects\API\node_modules\mysql2\promise.js:359:22)
    at Function.save (C:\Users\Alexander\Projects\API\src\api\v1\models\Candlestick.js:18:19)
    at C:\Users\Alexander\Projects\API\src\api\v1\controllers\candlestickController.js:28:29
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  code: 'ER_WRONG_ARGUMENTS',
  errno: 1210,
  sql: 'INSERT INTO Candlestick (openTime, market, `interval`, open, high, low, close, volume) VALUES (?, ?, ?, ?, ?, ?, ?, ?);',

쿼리를 복사하고 변수를 수동으로 설정하면 다음과 같습니다.

INSERT INTO Candlestick (openTime, market, `interval`, open, high, low, close, volume) VALUES (1, '', '', 0, 0, 0, 0, 0);

쿼리는 phpmyadmin에서 실행되지 않습니다.

누가 내가 뭘 놓쳤는지 말해줄래요?

사용 중:
mysql2 - ^2.3.3
mariadb - 10.3.34

이 문제를 해결하려면 다음에서 쿼리를 변경해야 했습니다.

let sql = "INSERT INTO Candlestick (openTime, market, `interval`, open, high, low, close, volume) VALUES (?, ?, ?, ?, ?, ?, ?, ?);";

대상:

let sql = "INSERT INTO Candlestick (openTime, market, `interval`, open, high, low, close, volume) VALUES ?;";

[데이터]의 모든 항목은 다음을 나타내기 때문입니다.(1, '', '', 0, 0, 0, 0, 0)그래서 그 내용물은 매번 채워집니다.또한 나는 그것을 바꿨습니다.db.execute로.db.query클라이언트 측에서 쿼리를 준비할 수 있습니다.이 기능의 장점은 쿼리가 잘못되었을 때 콘솔에서 준비된 쿼리 결과를 볼 수 있다는 것입니다.

언급URL : https://stackoverflow.com/questions/71666134/javascript-mysql-error-while-inserting-bulk-prepared-statements

반응형