Вставьте в Google Cloud SQL из облачной функции Node.js - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть экземпляр Google Cloud SQL, на котором выполняется MySQL Second Generation, и облачная функция Node.js.

index.js (ниже) выдает следующую ошибку при запуске.Как выполнить вставку базы данных Google Cloud SQL из среды Node.js.Из того, что я понимаю, мой синтаксис правильный, но я должен что-то упустить.connectionName, dbUser, dbPassword и dbName опущены по очевидным причинам.

{"code": "ER_PARSE_ERROR", "errno": 1064, "sqlMessage": "У вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем вашей версии сервера MySQL, чтобы использовать значения 'INSERT INTO entry (guestName, content) (first guest, I got here!); I'в строке 1 "," sqlState ":" 42000 "," index ": 0," sql ":" CREATE TABLE записи (guestName VARCHAR (255), содержимое VARCHAR (255), entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (entryID))); INSERT INTO значения записей (guestName, content) (first guest, I got here!); INSERT INTO значения записей (guestName, content) (second guest, Me too!); "}

index.js

const mysql = require('mysql');

const connectionName = process.env.INSTANCE_CONNECTION_NAME || '';
const dbUser = process.env.SQL_USER || '';
const dbPassword = process.env.SQL_PASSWORD || '';
const dbName = process.env.SQL_NAME || '';

const mysqlConfig = {
  connectionLimit: 1,
  user: dbUser,
  password: dbPassword,
  database: dbName
};

if (process.env.NODE_ENV === 'production') {
  mysqlConfig.socketPath = `/cloudsql/${connectionName}`;
}

let mysqlPool;

exports.populateDatabase = (req, res) => {
  if (!mysqlPool) {
    mysqlPool = mysql.createPool(mysqlConfig);
  }

  mysqlPool.query('CREATE TABLE entries (guestName VARCHAR(255), content VARCHAR(255),' +
                  'entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID));' + 
                  'INSERT INTO entries (guestName, content) values (`first guest`, `I got here!`);' + 
                  'INSERT INTO entries (guestName, content) values (`second guest`, `Me too!`);', (err, results) => {
    if (err) {
      console.error(err);
      res.status(500).send(err);
    } else {
      res.send(JSON.stringify(results));
    }
  });

};

1 Ответ

0 голосов
/ 30 ноября 2018

Вы передаете несколько операторов вызову метода .query ().По умолчанию множественные операторы не разрешены.

Для нескольких операторов можно включить , но имейте в виду, что это создает потенциальную угрозу безопасности.

...