node.js - 启动新的 Sequelize 后端但无法连接到 SQLite DB

标签 node.js sqlite sequelize.js sequelize-cli

我有一个新的 app.js 的最基本的框架,在 Node 中使用 Sequelize 和 Express 设置。每当我运行该项目时,我都会得到:

{ 错误:SQLITE_CANTOPEN:无法打开数据库文件 errno:14,代码:'SQLITE_CANTOPEN' }

我已经四处寻找解决方案,但根据我发现的其他帖子,我没有使用其他技术,例如电子,这些技术似乎会引起问题。我也尝试了将我的database.sqlite3从根目录移动到它自己的文件夹中的建议,但这没有帮助。

我的 app.js 看起来仍然像一个样板。我实际上没有做太多事情,只是尝试在创建模型并使用sequelize-cli 进行迁移后测试连接。

const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');

//Database Connection
const db = require('./config/database');

const Sequelize = require("sequelize");

const sequelize = new Sequelize({
  dialect: "sqlite",
  storage: "path/to/database.sqlite"
});

//Test the DB Connection
sequelize.authenticate()
  .then(() => console.log('Database Connected'))
  .catch(err => console.log('Error: ', err))



//Server
const app = express()

app.get('/', (req, res) => res.send('HELLO WORLD'))

const PORT = process.env.PORT || 5000;

app.listen(PORT, console.log(`Server started on ${PORT}`));

我的config.json如下,我仔细检查了路径。

{
  "development": {
    "dialect": "sqlite",
    "storage": "./db/database.sqlite3"
  },
  "test": {
    "dialect": "sqlite",
    "storage": ":memory"
  },
  "production": {
    "dialect": "sqlite",
    "storage": "./db/database.sqlite3"
  }
}

最佳答案

您的文件中似乎仍然有样板代码。具体来说,请查看以下几行:

const sequelize = new Sequelize({
  dialect: "sqlite",
  storage: "path/to/database.sqlite"
});

您似乎没有使用配置文件;相反,您正在尝试打开位于 path/to/database.sqlite3 的数据库文件。

试试这个:

const sequelize = new Sequelize(db[process.env.NODE_ENV]);

(我假设您想要加载与当前环境相对应的数据库配置)。

关于node.js - 启动新的 Sequelize 后端但无法连接到 SQLite DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55835942/

相关文章:

node.js - 如何使用 Sequelize 查询具有匹配 "where"条件的关联表

node.js - 第三级包括 Sequelize

javascript - Node js : TypeError: Object #<Object> has no method 'existsSync'

node.js - Mongoose :按字母顺序排序

java - 如何在android中的数据库上更改数据时得到通知?

android - 从数据库中获取空字符串时如何修复它?

node.js - 如何将关联表的 id 插入数据库

node.js - 使用 Node sdk 将模块连接到 Edge Hub 时出错 - NotConnectedError : unable to get local issuer certificate

node.js - 调用链码时出错:eventhub::Error: 14 UNAVAILABLE: 连接失败

java - 设置 SQLite 列默认值时如何使用字符串常量