从NodeJs创建时找不到Cloud SQl,MySQL数据库表

问题描述

我创建了一个Google云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-端口3306 然后我可以使用以下命令 显示表格; 要查看我的表,然后我可以看到我刚刚创建的表用户

My out from mysql CLI

我遇到的问题是当我尝试在表上执行任何查询时。我创建了以下函数来为我执行查询

async function PerformQuery(querytext) {
  return new Promise(resolve => {
    if (dbConnected){
        var sql = querytext;
        connection.query(sql,result) {
        if (err) console.log(err.message);
        
      });
    }
    console.log("Query performed");
    resolve();
  });
}

我已尝试使用此查询执行Select和Insert语句,但总是收到以下错误提示

The table GreehouseInfo.USERS does not exist

但是,正如我刚刚显示的那样,表确实存在,所以我不确定为什么会这样。我已经读到,如果您将设备备份到另一个位置,然后应该随身携带一些文件,就会发生这种情况,但是我不确定为了使连接在该设备上有效,我可能必须复制哪些数据库文件到本地设备。任何建议将不胜感激。

解决方法

据我所知,您的表是User(请参见创建脚本),而不是USERS(请参见SELECT ERROR)。在Linux env上区分大小写的问题;)

请参见docs

请参见示例here