Laravel迁移以奇怪的方式运作

时间:2017-04-07 10:04:31

标签: mysql laravel

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

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应按字母顺序运行迁移文件。

1 个答案:

答案 0 :(得分:6)

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

php artisan migrate:rollback
php artisan migrate

你正在做这个

php artisan migrate:refresh

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

中有2个命令

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

for (ParseObject requestObject: requestsArrayList) {
SimpleDateFormat sdf2 = new SimpleDateFormat("E MMM dd");
String date = null;
try {
    date = sdf.format(requestObject.getDate(ParseConstantsUtil.REQUEST_DATE_REQUESTED));
    log.info(String.valueOf(date));
} catch (java.text.ParseException e1) {
    e1.printStackTrace();
}
requestObject.add(ParseConstantsUtil.REQUEST_DATE_REQUESTED, date);
}

它将清除所有旧东西并且应该顺利运行!