启动新的 Sequelize 后端并且无法连接到 SQLite DB

Posted

技术标签:

【中文标题】启动新的 Sequelize 后端并且无法连接到 SQLite DB【英文标题】:Starting a new Sequelize backend and cannot connect to SQLite DB 【发布时间】:2019-09-14 02:21:52 【问题描述】:

我有一个新的 app.js 的最基本的骨架,并在 node.js 中设置了 sequelize 和 express。每当我运行项目时,我都会得到:

Error: SQLITE_CANTOPEN: unable to open database file errno: 14, code: '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"
  

【问题讨论】:

【参考方案1】:

您的文件中似乎仍有样板代码。具体来说,看看这些行:

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

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

试试这个:

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

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

【讨论】:

我们都去过那里;-)

以上是关于启动新的 Sequelize 后端并且无法连接到 SQLite DB的主要内容,如果未能解决你的问题,请参考以下文章

Sequelize:无法连接到 SQL Server - 传递的端口不正确

无法使用 sequelize 从本地节点应用程序连接到 heroku postgresql 数据库

无法连接到新的Azure SQL Server实例

将Sequelize连接到Google Cloud SQL

为啥即使使用 Colab Pro 帐户也无法连接到 GPU 后端?

MQTT 无法连接到后端 AWS IoT 核心