首页 > 解决方案 > Node.js SQLite 调用返回 SQLITE_ERROR: no such table

问题描述

我正在使用 Javascript 中的 Node.js 在 SQLite 3.2.1 中设置一个包含客户数据的数据库。

错误SQLITE_ERROR: no such table: T_KUNDENDATEN_DE不断被返回。从错误中我了解到可以联系数据库。SQL 查询有效,变量vornamenachname在 URL 中正确捕获并传递给 db.all 构造函数。但它返回错误。在调试模式下,我无法弄清楚这里出了什么问题。

表 T_KUNDENDATEN_DE 不是新表,其中包含数据。

有什么建议可以解决这个问题吗?

用于调用的 URL app.get('/cdata'http://localhost:8000/cdata?vorname=ralf&nachname=ruf

[![表和数据库][1]][1]
// Create express app
var express = require("express")
var app = express()
var DateObj= new Date()
var sqlite3 = require('sqlite3');
var db = new sqlite3.Database('KundendatenJS.db');
// Server port
var HTTP_PORT = 8000 
// Start server
app.listen(HTTP_PORT, () => {
    console.log("Server running on port %PORT%".replace("%PORT%",HTTP_PORT))
});
// Root endpoint
app.get("/", (req, res, next) => {
    res.json({"message":"Ok" + " " + DateObj })
});

// API endpoints
app.get('/cdata', function(req, res){
    if(req.query.vorname  && req.query.nachname){
        db.all('SELECT * FROM T_KUNDENDATEN_DE WHERE UPPER(VORNAME) = UPPER(?) AND UPPER(NACHNAME)=UPPER(?)', [req.query.vorname,req.query.nachname], function(err, rows){
            if(err){
                res.send(err.message);

            }
            else{
                console.log("Return the customer data for: " + req.query.vorname + " " + req.query.nachname);
                res.json(rows);
            }
        });
    }
    else{
console.log("No data found")
    }
});

// Default response for any other request
app.use(function(req, res){
    res.status(404);
});```

标签: javascriptnode.jssqliterest

解决方案


感谢@messerbill 的评论,我自动回答了这个问题。

发生错误是因为未正确引用 DB 路径。如果 SQLite 找不到现有数据库,它会创建一个新数据库。因此 SQLite 将找到一个数据库,但不是一个表。该错误消息具有误导性,因为它似乎指向内部连接错误。

解决方案:在您的解决方案中查找创建数据库的路径。这将帮助您在解决方案中设置正确的路径。


推荐阅读