AWS RDS BatchExecuteStatementRequest - PullRequest
       50

AWS RDS BatchExecuteStatementRequest

0 голосов
/ 15 октября 2019

Я пытаюсь обновить свою базу данных RDS Aurora простой информацией.

import * as AWS from 'aws-sdk';
import { BatchExecuteStatementRequest } from 'aws-sdk/clients/rdsdataservice';

const RDS = new AWS.RDSDataService();

export const create = async (event: any) => {
  try {
    const params: BatchExecuteStatementRequest = {
      secretArn: 'arn:aws:secretsmanager:XXXXXXXXXXXXXXXXXXX',
      resourceArn: 'arn:aws:rds:XXXXXXXXXXXXXXXXXXXXX',
      schema: 'PUBLIC',
      database: 'test_db',
      parameterSets: [
          [
            {
              name: 'FirstName',
              value: {
                stringValue: 'Joe',
              }
            },
            {
              name: 'LastName',
              value: {
                stringValue: 'Doe'
              }
            }
          ],
          [
            {
              name: 'FirstName',
              value: {
                stringValue: 'Joyer',
              }
            },
            {
              name: 'LastName',
              value: {
                stringValue: 'Doyer'
              }
            }
          ]
      ],
      sql: 'INSERT INTO test_table (FirstName, LastName) VALUES (:FirstName, :LastName)'
    };

    const res = await RDS.batchExecuteStatement(params).promise();

    console.log({ result: res, params });
    return {
      statusCode: 200,
      body: JSON.stringify(res)
    };
  } catch (err) {

    console.error(err);
    return {
      statusCode: err.statusCode || 500,
      headers: { 'Content-Type': 'text/plain' },
      body: 'Could not create the note.'
    };
  }
};

Это приведет к ошибке:

{ BadRequestException: 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 ’(’Joyer’, ‘Doyer’)' at line 1 }

Странная часть: работает, если я добавляю ОДНОГО человека в наборы параметров, поэтому ошибка возникает, когда я пытаюсь получить большечем один массив.

Я создал свою базу данных в консоли AWS, вот запрос для этого:

CREATE DATABASE IF NOT EXISTS test_db;
USE test_db;
CREATE TABLE IF NOT EXISTS test_table (
  Id int NOT NULL AUTO_INCREMENT,
  FirstName varchar(255), 
  LastName varchar(255),
  PRIMARY KEY (Id)
);

1 Ответ

0 голосов
/ 15 октября 2019

Я нашел проблему, когда писал вопрос, подумал, что все равно поделюсь здесь.

Вы не можете иметь AUTO_INCREMENT! Это была ошибка, просто удали ее и все работает.

Это была пара веселых часов .....

...