You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Vapor部署应用报错:SQLite数据库文件不存在如何解决?

修复Laravel Vapor部署后SQLite数据库不存在的错误

问题根源

Laravel Vapor基于AWS Lambda,属于无服务器环境:

  • 本地项目里的database.sqlite文件不会被打包进部署包,所以Vapor运行时找不到该文件
  • Lambda的文件系统是临时且只读的,即使手动创建SQLite文件,数据也无法持久化,重启后就会丢失

推荐解决方案:改用云数据库(MySQL/PostgreSQL)

Vapor原生支持AWS RDS云数据库,这是生产环境的标准做法:

  1. 登录Laravel Vapor控制台,为你的项目创建或关联一个RDS数据库实例(选择MySQL或PostgreSQL)
  2. 更新项目根目录的.env文件,替换SQLite配置为云数据库的真实信息:
DB_CONNECTION=mysql # 若用PostgreSQL则填pgsql
DB_HOST=你的RDS主机地址
DB_PORT=3306 # PostgreSQL默认是5432
DB_DATABASE=数据库名称
DB_USERNAME=数据库用户名
DB_PASSWORD=数据库密码
  1. 修改vapor.yml的build步骤,添加数据库迁移命令(生产环境必须加--force):
id: 45784
name: laravel-new
environments:
    production:
        memory: 1024
        cli-memory: 512
        runtime: 'php-8.3:al2'
        build:
            - 'composer install --no-dev'
            - 'php artisan event:cache'
            - 'php artisan migrate --force' # 新增这行
          # - 'npm ci && npm run build && rm -rf node_modules'
  1. 重新部署项目:
vapor deploy production

临时测试方案:使用内存SQLite(仅用于测试,禁止生产)

如果只是想快速验证项目运行,可改用内存SQLite,但数据不会持久化:

  1. 修改config/database.php中的SQLite配置:
'sqlite' => [
    'driver' => 'sqlite',
    'url' => env('DB_URL'),
    'database' => ':memory:', // 替换为内存数据库标识
    'prefix' => '',
    'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    'busy_timeout' => null,
    'journal_mode' => null,
    'synchronous' => null,
],
  1. 同样在vapor.yml的build步骤添加迁移命令:
build:
    - 'composer install --no-dev'
    - 'php artisan event:cache'
    - 'php artisan migrate --force'
  1. 重新部署即可,但每次Lambda冷启动后数据都会清空,仅适合测试。

内容的提问来源于stack exchange,提问作者base

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 17:19:51