laravel - 从 Laravel tinker 控制台 (sqlite) 迁移时出错

标签 laravel

考虑

laravel new bug

然后添加 .env
DB_CONNECTION=sqlite
DB_DATABASE=/home/me/Code/bug/storage/database.sqlite

创建数据库
touch /home/me/Code/bug/storage/database.sqlite

迁徙
php artisan migrate && php artisan migrate:fresh

现在尝试在 tinker 中以编程方式迁移
php artisan tinker
>> Artisan::call('migrate');

第一次导致 => 0(如预期的那样?)但第二次:
>>> Artisan::call('migrate:fresh')

Illuminate\Database\QueryException with message 'SQLSTATE[HY000]: General error: 17 database schema has changed (SQL: select * from sqlite_master where type = 'table' and name = migrations)'

Artisan::call('migrate') Third time:




Symfony\Component\Console\Exception\CommandNotFoundException 与
消息“在“迁移”命名空间中没有定义命令。

任何想法这里发生了什么?你能繁殖吗?

使用 postgres 更新。第二次运行 Artisan::call('migrate:fresh') 我得到:

Symfony\Component\Console\Exception\CommandNotFoundException with message 'There are no commands defined in the "migrate" namespace.'



更新 2:此处提交的问题:https://github.com/laravel/framework/issues/22997
https://github.com/laravel/tinker/issues/37

最佳答案

我不认为这是否是 Laravel 错误,但我发现了您的问题:

调用不存在的命令,如 Artisan::call('migrate:fresh')会崩溃。原因是打字错误:tinker 不接受 fresh , 仅 refresh .通过 tinker 调用命令将清空 sqllite 文件,因此在没有 tinker 的情况下迁移之前,您无法执行任何命令。

这是我的步骤:

php artisan migrate # sqllite file is filled with content
php artisan tinker
> Artisan:call('refresh')
> Artisan::call('fresh') # now the sqllite file is empty
> Artisan::call('migrate') # will crash
php artisan migrate
> Artisan::('refresh') # works

所以我认为这是一个修补程序错误,而不是 Laravel 错误。 Tinker 正在做某种快照(如果您更改模型,则必须重新启动 tinker 才能在那里调用它),也许未实现错误处理是捕获所有错误的最佳方法。

关于laravel - 从 Laravel tinker 控制台 (sqlite) 迁移时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48527840/

相关文章:

laravel - 启用 ssl 时在 laravel 5.7 上获取 404

php - 何时在 Laravel 4 中使用模型

php - 在 Laravel 中为 mysql 数据库制作模型和 Controller ?

php - Laravel 4 级联软删除

php - Laravel Blade 通过@include 使用字符串传递变量会导致错误

php - 确定 Laravel 查询中是否存在关系

laravel - 如果数组为空 Blade laravel

laravel - 从数据透视表 laravel 中删除一个条目

php - Laravel 类别和性能

php - Laravel:如何获取选择(下拉列表)的值以与模型绑定(bind)?