“AWS RDS 数据库错误:ER_NO_SUCH_TABLE:表不存在”-但相同的架构在本地 mysql/Nodejs 上运行良好

Posted

技术标签:

【中文标题】“AWS RDS 数据库错误:ER_NO_SUCH_TABLE:表不存在”-但相同的架构在本地 mysql/Nodejs 上运行良好【英文标题】:"AWS RDS database Error: ER_NO_SUCH_TABLE: Table doesn't exist"- but the same Schema works fine locally mysql/Nodejs 【发布时间】:2020-12-07 02:02:53 【问题描述】:

我有本地 Node.js,我已使用以下代码连接到 DB(AWS RDS),它适用于其他查询,但对于一个查询,它会出现错误,因为它不存在。我已经在本地测试了相同的代码,它工作得非常好,但是当我将它上传到 AWS RDS 时,我只收到一个查询的这个错误。如果我在这里遗漏了什么,请有任何建议。

-snippet 本地 Node.js 代码


    const express = require("express");
    const mysqlx = require("mysql");
    const jwt = require("jsonwebtoken");
    const auth = require("./verifyTokenExisting");
    const authNew = require("./verifyTokenNew");
    const cors = require("cors");
    const cookieParser = require("cookie-parser");
    const pdf = require("html-pdf");
    const pdfTemplate = require("./documents/pdfTemplate");
    const fs = require("fs");
    
    app.post("/api/invoice-all", (req, res) => 
    ........................................................
    
     connection.query("SELECT * FROM  users_basket WHERE users_user_id=?;", [user_id], function (err, results) 
          if (err) console.log("Error3", err);   // here the error is coming
          else 
            console.log("1578", results);
            //  let invoice_Object = json.stringify(results);
            res.json(results);
          
        );

-SnippetNOde.js 处的错误


   Error3 Error: ER_NO_SUCH_TABLE: Table 'join_us.users_basket' doesn't exist
       at Query.Sequence._packetToError (D:\Programming\Repo\javascript-Project\ec-server\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
       at Query.ErrorPacket (D:\Programming\Repo\JavaScript-Project\ec-server\node_modules\mysql\lib\protocol\sequences\Query.js:79:18)
       at Protocol._parsePacket (D:\Programming\Repo\JavaScript-Project\ec-server\node_modules\mysql\lib\protocol\Protocol.js:291:23)
       at Parser._parsePacket (D:\Programming\Repo\JavaScript-Project\ec-server\node_modules\mysql\lib\protocol\Parser.js:433:10)
       at Parser.write (D:\Programming\Repo\JavaScript-Project\ec-server\node_modules\mysql\lib\protocol\Parser.js:43:10)
       at Protocol.write (D:\Programming\Repo\JavaScript-Project\ec-server\node_modules\mysql\lib\protocol\Protocol.js:38:16)
       at Socket.<anonymous> (D:\Programming\Repo\JavaScript-Project\ec-server\node_modules\mysql\lib\Connection.js:88:28)
       at Socket.<anonymous> (D:\Programming\Repo\JavaScript-Project\ec-server\node_modules\mysql\lib\Connection.js:526:10)
       at Socket.emit (events.js:310:20)
       at addChunk (_stream_readable.js:286:12)
       --------------------.
    code: 'ER_NO_SUCH_TABLE',
     errno: 1146,
     sqlMessage: "Table 'join_us.users_basket' doesn't exist",
     sqlState: '42S02',
     index: 0,
     sql: 'SELECT * FROM  users_basket WHERE users_user_id=1;'

-users_basket 确实存在如下 snapshort rds

【问题讨论】:

【参考方案1】:

users_basket 确实存在

否:users_Basket 存在,但 users_basket 不存在(Bb)!

将您的查询更改为SELECT * FROM users_Basket WHERE users_user_id=?;(大写B)应该可以解决它。

它在您的计算机上运行的原因可能是因为您的计算机使用的是不区分大小写的文件系统,并且database tables are stored as files!

【讨论】:

非常感谢,您的眼光不错。它真的拯救了我的一天:)

以上是关于“AWS RDS 数据库错误:ER_NO_SUCH_TABLE:表不存在”-但相同的架构在本地 mysql/Nodejs 上运行良好的主要内容,如果未能解决你的问题,请参考以下文章