【发布时间】:2021-01-26 02:05:57
【问题描述】:
我创建了一个谷歌云 mySql 实例,我想用它来存储一些温室信息。我已经设置了实例,并且还将我的 NodeJs 程序连接到了实例。我还使用以下命令运行 mysql 云代理
.\cloud_sql_proxy.exe -instances=my-instance-name=tcp:3306
以下代码用于连接数据库。
var dbConnected = false;
const config = ConnectionOptions = {
host: '127.0.0.1',
user: 'Username',
password: 'Password',
database: 'GreehouseInfo',
dialect: 'mysql',
synchronize: true,
}
const connection = mysql.createConnection(config);
async function ConnectToDatabse() {
await connection.connect((err) => {
if (err) throw err;
console.log('Connected!');
dbConnected = true;
});
}
现在我还使用以下查询来动态创建我的一些表,代码看起来像这样 #
async function CreateTables() {
return new Promise(resolve => {
if (dbConnected){
var sql = "CREATE TABLE IF NOT EXISTS Users(User_ID INT AUTO_INCREMENT PRIMARY KEY,UserName VARCHAR(255) NOT NULL,Password VARCHAR(255))";
connection.query(sql, function (err, result) {
console.log(result)
if (err) console.log(err);
});
}
console.log("Table created");
resolve();
});
}
当我启动节点服务并说表已创建并且当我使用命令行和以下命令连接到数据库实例时,查询不会引发任何错误 mysql -u RichardTeunen -p --host 127.0.0.1 --port 3306 然后我可以使用以下命令 显示表格; 查看我的表,然后我可以看到我刚刚创建的表用户
我遇到的问题是当我尝试对表执行任何查询时。我创建了以下函数来为我执行查询。
async function PerformQuery(querytext) {
return new Promise(resolve => {
if (dbConnected){
var sql = querytext;
connection.query(sql, function (err, result) {
if (err) console.log(err.message);
});
}
console.log("Query performed");
resolve();
});
}
我已尝试使用此查询的 Select 和 Insert 语句,但总是收到以下错误
The table GreehouseInfo.USERS does not exist
但是,正如我刚刚展示的那样,表格确实存在,所以我不确定为什么会发生这种情况。我已经读过,如果您将设备备份到另一个位置,然后您应该随身携带一些文件,就会发生这种情况,但我不确定我可能必须将哪些数据库文件复制到我的本地设备以使连接在此设备上有效。任何建议将不胜感激。
【问题讨论】:
标签: mysql node.js google-cloud-platform google-cloud-sql cloud-sql-proxy