gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:40:34 26 4
gpt4 key购买 nike

考虑

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com