【发布时间】:2019-04-30 23:07:33
【问题描述】:
我有一个运行 MySQL 第二代的 Google Cloud SQL 实例和一个 Node.js 云函数。
index.js(下)在运行时会产生以下错误。如何从 Node.js 环境执行 Google Cloud SQL 数据库插入。据我了解,我的语法是正确的,但我一定遗漏了一些东西。出于显而易见的原因,connectionName、dbUser、dbPassword 和 dbName 已被省略。
{"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