【问题标题】:How to set up SQLITE for laravel webserver?如何为 laravel 网络服务器设置 SQLITE?
【发布时间】:2016-07-21 12:47:53
【问题描述】:

我想在我的网络服务器上为我的 laravel5 项目使用 SQLITE。我将本地 laravel 5 项目迁移到我的 AWS ec2 lamp Ubuntu 服务器上。 http://realtoraxe.com/realtoraxe/public/ 但它显示

InvalidArgumentException in SQLiteConnector.php line 34: Database does not exist.

我更改了为 sqlite 设置的 database.php

 <?php
 return array(
    'default' => 'sqlite',
    'connections' => array(
    'sqlite' => array(
    'driver'   => 'sqlite',
    'database' =>    'http://realtoraxe.com/realtoraxe/storage/database.sqlite',
    'prefix'   => '',
     ),
   ),
  );
 ?>

我将 .env 更改为

APP_ENV=local
APP_DEBUG=true
APP_KEY=mystring
DB_CONNECTION=sqlite
CACHE_DRIVER=file
SESSION_DRIVER=file

当我这样做时 php工匠迁移 它说没有数据库

我认为我在 database.php 中作为数据库路径写的内容是错误的,我可能需要以某种方式在 .env 文件中写入我的 ip 地址吗?我整晚都在谷歌上搜索,似乎无法弄清楚这一点。

【问题讨论】:

  • database.php 中有默认的 sqlite 配置选项。因为它已经期望该文件位于您的存储文件夹中并命名为database.sqlite,所以您唯一需要做的就是将DB_CONNECTION=sqlite 添加到您的.env 文件中。

标签: sqlite laravel


【解决方案1】:

对于默认的 laravel 5.2+ 安装:

创建一个 sqlite 数据库文件

$ cd storage
$ touch database.sqlite
$ cd ..

使其可写

$ chmod -R 777 storage

在“.env”文件中:

DB_CONNECTION=sqlite
DB_DATABASE=storage/database.sqlite

并删除或评论所有其他 DB_* 记录

如果您更喜欢使用相对路径,而不是数据库文件的绝对路径 在“config/database.php”

代替:

'database' => env('DB_DATABASE', database_path('database.sqlite')),

写:

'database' => __DIR__ . '/../' . env( 'DB_DATABASE' ),

现在,laravel app 可以找到 sqlite 文件了,php artisan 也可以了

【讨论】:

  • 有什么理由将其存储在存储目录而不是数据库目录中?
【解决方案2】:

您根本不需要编辑 .php 文件。您都可以在 .env 文件中执行此操作,因为 config 目录中的文件被写入首先使用 .env 文件中的值,如果未定义,则回退到那里定义的内容。

env('DB_CONNECTION','mysql') 将产生来自 .env 文件的值,并且只有在未定义的情况下才会回退到 mysql。

所以在您的 .env 文件中只需输入以下内容:

DB_CONNECTION=sqlite DB_DATABASE=database/database.sqlite 并在您的database 目录中创建一个名为database.sqlite 的文件(按照惯例,这就是它应该在的位置。)。就是这样。

【讨论】:

    【解决方案3】:

    你为什么使用 HTTP 链接?我想它应该链接到.sqlite DB 文件:

    'database' => __DIR__.'/../database/production.sqlite',
    

    http://laravel-recipes.com/recipes/118/setting-up-the-sqlite-database-driver

    【讨论】:

    • 是的。那是一个http链接。我需要在我的 .env 文件中添加任何其他内容吗?
    • @user432495,你明白不能使用HTTP链接吗?您应该给出具体文件的链接。
    • 是的。该文件位于 /database/database.sqlite 中。我把这行写成'database' => DIR.'/../database/database.sqlite',(还是没看到)
    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 2013-06-11
    • 2014-07-16
    • 2020-12-14
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    相关资源
    最近更新 更多