如何修复错误:SQLITE_CANTOPEN:无法在 Zeit.co 上打开数据库?

Posted

技术标签:

【中文标题】如何修复错误:SQLITE_CANTOPEN:无法在 Zeit.co 上打开数据库?【英文标题】:How to fix Error: SQLITE_CANTOPEN: unable to open database on Zeit.co? 【发布时间】:2020-05-28 21:01:22 【问题描述】:

我想连接到我的数据库,它是 sqlite3。这在 localhost 上运行良好,但当我部署到 zeit.co 时出现错误:

Error: SQLITE_CANTOPEN: unable to open database

据我了解,这个问题是因为我们无法获得数据库文件的正确路径。我尝试了一些解决方案,但仍然失败。请帮忙!!!

这是 zeit.co 日志上的错误:

2020-02-13T07:50:40.031Z 4d5a9aed-ae26-4a09-903a-72aa08ca5140 错误未处理的承诺拒绝 "errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"错误: SQLITE_CANTOPEN:无法打开数据库 文件","原因":"errorType":"错误","errorMessage":"SQLITE_CANTOPEN: 无法打开数据库 文件","代码":"SQLITE_CANTOPEN","errno":14,"stack":["错误: SQLITE_CANTOPEN:无法打开数据库 文件"],"promise":"isFulfilled":false,"isRejected":true,"rejectionReason":"errorType":"Error","errorMessage":"SQLITE_CANTOPEN: 无法打开数据库 文件","代码":"SQLITE_CANTOPEN","errno":14,"stack":["错误: SQLITE_CANTOPEN:无法打开数据库 文件"],"堆栈":["Runtime.UnhandledPromiseRejection: 错误: SQLITE_CANTOPEN: 无法打开数据库文件"," 在 过程。 (/var/runtime/index.js:35:15)"," 在 process.emit (events.js:228:7)"," 在 eventToObjectGenerator.promiseCreated (/var/task/node_modules/bluebird/js/release/debuggability.js:258:33)"," 在 activeFireEvent (/var/task/node_modules/bluebird/js/release/debuggability.js:301:44)"," 在 fireRejectionEvent (/var/task/node_modules/bluebird/js/release/debuggability.js:703:14)"," 在 Promise._notifyUnhandledRejection (/var/task/node_modules/bluebird/js/release/debuggability.js:90:9)"," 在 Timeout.unhandledRejectionCheck [as _onTimeout] (/var/task/node_modules/bluebird/js/release/debuggability.js:39:25)"," 在 listOnTimeout (internal/timers.js:531:17)"," 在 processTimers (internal/timers.js:475:7)"] 发生未知的应用程序错误

这是我连接到 sqlite 的代码

const fs = require('fs');
const path = require('path');

const DBSOURCE = path.join(__dirname, 'mydb.sqlite');

const knex = require('knex')(
    client: 'sqlite3',
    connection: 
        filename: DBSOURCE
    
);

注意:

    我试过const DBSOURCE = 'mydb.sqlite'; 我试过const DBSOURCE = path.resolve(__dirname, 'mydb.sqlite');

【问题讨论】:

这里是答案:***.com/questions/69669634/… 【参考方案1】:

对于那些从谷歌那里跌跌撞撞的人来说,Zeit 现在是 Vercel,并且有一个在无服务器环境中使用 mysql 的更新示例。

https://github.com/vercel/next.js/tree/canary/examples/with-mysql

【讨论】:

以上是关于如何修复错误:SQLITE_CANTOPEN:无法在 Zeit.co 上打开数据库?的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚如何修复错误

如何修复格式错误的 POM:无法识别的标签:'groupId'?

如何修复“无法分配给属性:'setBarTintGradientColors' 是一种方法”的错误 [关闭]

如何修复 Xcode“DTAssetProviderService 无法启动..”错误?

PhpMyAdmin - 错误无法在没有错误的情况下启动会话:如何修复?

Android 9.0 SQLiteCantOpenDatabaseException SQLITE_CANTOPEN(不支持WAL模式)源码分析定位