【问题标题】:Laravel migration works in strange wayLaravel 迁移以奇怪的方式工作
【发布时间】:2017-09-02 16:08:14
【问题描述】:

我已经删除了我的测试数据库,然后我想使用保存的迁移创建新数据库:

2017_03_01_000000_create_api_table.php
2017_03_06_000000_create_beeline_calls.php
2017_03_13_000000_modify_beeline_emails.php
2017_03_14_000000_interactive_forms.php
2017_03_16_000000_model_instances.php
2017_03_24_000000_create_objects.php
2017_03_24_000001_create_objects_tables_v2.php
2017_03_24_000003_make_comments_without_users.php
2017_03_27_000000_add_processed_to_announcements.php
2017_03_29_000000_create_ads_channels.php
2017_03_29_000001_announcement_client.php
2017_04_06_000000_create_filters.php
2017_04_07_000000_create_new_input_types.php

当我运行php artisan migrate --pretend

  [Doctrine\DBAL\Schema\SchemaException]                                                                  
  There is no column with name 'creator_id' on table 'application_model_instance_announcement_comments'.

但要运行的第一个迁移文件是2017_03_01_000000_create_api_table.php

为什么它不从头开始运行?数据库为空,migrations 表为空。 据我了解,Laravel 应该按字母顺序运行迁移文件。

【问题讨论】:

  • php artisan migrate:refresh --seed try thin one
  • migrate 不起作用,但 migrate:refresh 起作用了。我不明白为什么......
  • 我认为 migrate refresh 在我的分析器中也有一些这些命令,它会删除数据库表中的所有迁移和数据......所以这就是它起作用的原因。

标签: mysql laravel


【解决方案1】:

为了能够执行php artisan migrate,您在其中创建列的表不能包含与该迁移中相同的列名。您必须先删除它并使用此命令

php artisan migrate:refresh

你就是这样做的

php artisan migrate:rollback
php artisan migrate

php artisan migrate:refresh中有2条命令

在迁移中更改某些内容时,请始终运行以下命令:

php artisan cache:clear
php artisan view:clear
php artisan route:clear
composer dump-autoload

它会清除所有旧的东西,应该可以顺利运行!

【讨论】:

  • 对不起,但出于某种奇怪的原因,它没有帮助。 migrate:refresh 帮助。
  • 是的,因为在迁移刷新中实际上有 2 个命令...php artisan migrate:rollbackphp artisan migrate 我会更新我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 2020-12-02
  • 1970-01-01
相关资源
最近更新 更多