我试图用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
表。
谢谢
它因为你没有创建数据库。使用sqlite
类似下面的命令创建新的SQLite数据库。
laravel 5
然后配置这样的环境变量
mysql
为了回答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)添加/替换以下到SqliteServiceProvider
的RouteServiceProvider
元件
'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的文件应该被创建,然后填充。
这是正确的,你需要创建空.env
文件。
如果你想工匠加载具体.ENV文件,也应当使用DB_SQLITE_FILEPATH=/full/path/to/mysqlitefilename.sqlite
参数。例如,database/database.sqlite
将迫使工匠加载database.sqlite
文件。
好,我知道了。 artisan --env
似乎忽视了artisan --env=testing migrate
和database.php中默认的(这反正读取.env.testing
)。相反,它喜欢artisan migrate
文件env DB_CONNECTION
,这一组以env
它的工作原理(加,如上面提到你需要手动创建数据库文件,这是在飞行使DBS痛苦。
也意味着你无法去改变工匠迁移的数据库类型(即:.env
和DB_CONNECTION
)上,因为你需要在每次更改目标DB类型时更改sqlite
变量飞。
去laravel。