为什么laravel 5工匠情况下迁移没有创造SQLite数据库?

问题描述 投票:2回答:3

我试图用artisan migrate创造sqlite表。

我在database.php中以下

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => database_path('database.sqlite'),
        'prefix' => '',
    ],

这是我的迁移类up功能

    Schema::connection('sqlite')->create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });

注: - 我已经设置DB_CONNECTION是通过环境变量sqlite的。

在命令行中我得到nothing to migrate,没有DB创建(也没有表)。

任何想法如何,我可以得到qazxsw POI创建qazxsw POI数据库中qazxsw POI?

我没有问题,通过创建工匠artisan migrate表。

谢谢

php sqlite laravel laravel-5 artisan
3个回答
3
投票

它因为你没有创建数据库。使用sqlite类似下面的命令创建新的SQLite数据库。

laravel 5

然后配置这样的环境变量

mysql

1
投票

为了回答OP的这部分的质询:“任何想法如何,我可以得到工匠迁移在laravel 5,创建一个SQLite数据库”

在某些情况下,部署和迁移需要将脚本我用touch检查sqlite的DB存在,如果不创建它。

具体操作步骤如下:

1)创建一个提供者,并将其保存到touch database/database.sqlite

DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite

2)注册于Service Provider提供商。例如,在新鲜L5.8安装app/Providers/SqliteServiceProvider.php<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class SqliteServiceProvider extends ServiceProvider { /** * Bootstrap the application services. * * @return void */ public function boot() { $databaseFile = config('database.connections.sqlite.database'); if (!file_exists($databaseFile)) { info('Make Sqlite File "' . $databaseFile . '"'); file_put_contents($databaseFile, ''); } } } 下将被放置像这样:

config/app.php

3)添加/替换以下到SqliteServiceProviderRouteServiceProvider元件

'providers' => [

    //...

    /*
     * Application Service Providers...
     */
    App\Providers\AppServiceProvider::class,
    App\Providers\AuthServiceProvider::class,
    // App\Providers\BroadcastServiceProvider::class,
    App\Providers\EventServiceProvider::class,
    App\Providers\RouteServiceProvider::class,
    App\Providers\SqliteServiceProvider::class, // <--- HERE

],

4)在我'connections'文件我补充一点:

config/database.php

......但如果你喜欢,你可以跳过这一步,数据库会'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_SQLITE_FILEPATH', database_path('database.sqlite')), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), ], 被创建。

5)运行迁移像往常一样和SQLite的文件应该被创建,然后填充。


0
投票

这是正确的,你需要创建空.env文件。

如果你想工匠加载具体.ENV文件,也应当使用DB_SQLITE_FILEPATH=/full/path/to/mysqlitefilename.sqlite 参数。例如,database/database.sqlite将迫使工匠加载database.sqlite文件。


-1
投票

好,我知道了。 artisan --env似乎忽视了artisan --env=testing migrate和database.php中默认的(这反正读取.env.testing)。相反,它喜欢artisan migrate文件env DB_CONNECTION,这一组以env它的工作原理(加,如上面提到你需要手动创建数据库文件,这是在飞行使DBS痛苦。

也意味着你无法去改变工匠迁移的数据库类型(即:.envDB_CONNECTION)上,因为你需要在每次更改目标DB类型时更改sqlite变量飞。

去laravel。

© www.soinside.com 2019 - 2024. All rights reserved.