【问题标题】:Insert into Google Cloud SQL from Node.js Cloud Function从 Node.js Cloud Function 插入到 Google Cloud SQL
【发布时间】:2019-04-30 23:07:33
【问题描述】:

我有一个运行 MySQL 第二代的 Google Cloud SQL 实例和一个 Node.js 云函数。

index.js(下)在运行时会产生以下错误。如何从 Node.js 环境执行 Google Cloud SQL 数据库插入。据我了解,我的语法是正确的,但我一定遗漏了一些东西。出于显而易见的原因,connectionNamedbUserdbPassworddbName 已被省略。

{"code":"ER_PARSE_ERROR","errno":1064,"sqlMessage":"您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 ' 附近使用的正确语法INSERT INTO entries (guestName, content) values (first guest, I got here!);I' at line 1","sqlState":"42000","index":0,"sql":"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 ) 值 (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));
    }
  });

};

【问题讨论】:

  • 您一次将多个查询传递给您的 .query() 方法调用。您是否尝试过仅传递“CREATE TABLE”查询?
  • 我做到了,而且成功了。如何执行多行查询?

标签: mysql sql node.js google-cloud-platform google-cloud-sql


【解决方案1】:

您将几个语句传递给您的 .query() 方法调用。默认情况下,不允许使用多个语句。

多个语句查询可以是enabled,但请注意这会带来潜在的安全风险。

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2019-08-18
    相关资源
    最近更新 更多