javascript - Node.js SQLite 调用返回 SQLITE_ERROR: no such table
问题描述
我正在使用 Javascript 中的 Node.js 在 SQLite 3.2.1 中设置一个包含客户数据的数据库。
错误SQLITE_ERROR: no such table: T_KUNDENDATEN_DE不断被返回。从错误中我了解到可以联系数据库。SQL 查询有效,变量vorname和nachname在 URL 中正确捕获并传递给 db.all 构造函数。但它返回错误。在调试模式下,我无法弄清楚这里出了什么问题。
表 T_KUNDENDATEN_DE 不是新表,其中包含数据。
有什么建议可以解决这个问题吗?
用于调用的 URL app.get('/cdata'
。
http://localhost:8000/cdata?vorname=ralf&nachname=ruf
// 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);
});```
解决方案
感谢@messerbill 的评论,我自动回答了这个问题。
发生错误是因为未正确引用 DB 路径。如果 SQLite 找不到现有数据库,它会创建一个新数据库。因此 SQLite 将找到一个数据库,但不是一个表。该错误消息具有误导性,因为它似乎指向内部连接错误。
解决方案:在您的解决方案中查找创建数据库的路径。这将帮助您在解决方案中设置正确的路径。
推荐阅读
- flutter - 带有文本的颤动轮播滑块
- java - Cherry pick 适用于多次提交,但不断提示“您处于 '分离 HEAD' 状态”
- python - 从 javascript 到 Ruby 或其他语言的三重 DES 加密
- python-3.x - 在 Mac OS 的 Visual Studio Code 中将 Homebrew python3 与 homebrew 包和 pip/pip3 包一起使用
- laravel - 在 laravel 错误中为 foreach() 提供的参数无效(查看:我看不到 $value
- reactjs - React 中的引导模式未打开
- colorbar - .jpeg 热图像中不准确的颜色图 [FLIR TOOLS]
- docker - 开发环境的 docker-compose 和 docker-compose.extend 之间的映射端口
- kotlin - Kotlin 智能转换无法使用扩展功能
- swift - 带有授权不记名令牌和附加标头的 Alamofire 请求 Swift