我有一个运行mysql第二代的googlecloudsql示例,还有一个node.js cloud函数。
index.js(下面)在运行时产生以下错误。如何从node.js环境执行googlecloud sql数据库插入。据我所知,我的语法是正确的,但我肯定遗漏了什么。 connectionName
, dbUser
, dbPassword
,和 dbName
由于明显的原因被省略了。
{“code”:“er\u parse\u error”,“errno”:1064,“sqlmessage”:“您的sql语法有错误;查看与mysql服务器版本相对应的手册,以获得使用“insert into entries(guestname,content)”值的正确语法( first guest
, I got here!
);i'在第1行,“sqlstate”:“42000”,“index”:0,“sql”:“创建表条目(guestname varchar(255),content varchar(255),entryid int not null autoïu increment,primary key(entryid));插入到条目(guestname,content)值中( first guest
, I got here!
);插入到条目(guestname,content)值中( second guest
, Me too!
);"}
索引.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条答案
按热度按时间kkih6yb81#
您正在向.query()方法调用传递几个语句。默认情况下,不允许使用多个语句。
可以启用多语句查询,但请注意,这会带来潜在的安全风险。