Laravel Artisan没有说要迁移

时间:2014-01-21 19:08:17

标签: php laravel database-migration

我使用php artisan migrate:install安装了迁移,然后使用php artisan migrate:make create_teams_table命令创建了迁移。现在我尝试使用我根据official documentation创建的以下命令运行它们:

php artisan migrate --path=app/foo/migrations/2014_01_21_143531_create_teams_table.php

这在控制台上给出了以下内容:

  

无需迁移。

数据库中的migrations表为空,并且不创建新表。我不明白为什么文档在路径中说foofoo是什么意思,它来自哪里?首先,我认为路径是错误的,因为foo事物,因为我知道路径是相对于app文件夹所以我将其更改为app/database/migrations,但它不起作用。我也尝试了很多其他的路径组合,但没有一个有效。

我走错了路吗?在这种情况下,控制台是否应该显示其他一些有用的消息? foo是什么意思?我该如何运行迁移?

9 个答案:

答案 0 :(得分:26)

试试这个:

首先:

C:\xampp\htdocs\laravel-master>php artisan migrate:reset

回滚:2014_03_28_142140_user_table

无法回滚。

第二

C:\xampp\htdocs\laravel-master>php artisan migrate

已迁移:2014_03_28_142140_user_table

检查数据库。

答案 1 :(得分:10)

foo事只是一个例子。 Laravel将在默认情况下查找在app/database/migrations中运行的迁移。尝试删除--path参数,看看它是否有效。

答案 2 :(得分:7)

假设您有一个名为my_migration.php的迁移文件

 php artisan migrate --path=app/database/migrations/my_migration.php 

会对你有用。

答案 3 :(得分:4)

是什么帮助了我:

php artisan config:cache
php artisan migrate

答案 4 :(得分:3)

需要删除迁移表的2014_01_21_143531_create_teams_table。

  1. 进入数据库(phpmyadmin)
  2. 打开您的数据库名称。 3.打开迁移表。
  3. 删除 2014_01_21_143531_create_teams_table 行

答案 5 :(得分:0)

如果数据库中的migrations表为空,则会出现问题。 因此,解决方案是打开作曲家的修补程序

$ php artisan tinker
>>> Schema::drop('users')
>>> Schema::drop('password_resets')
>>> Schema::drop('orders')
>>> exit
php artisan migrate

这是上述命令执行的结果

nishanth@localhost:~/Desktop/html/hutch$ php artisan migrate
  

在Connection.php第647行中:                                                                                     SQLSTATE [42S01]:基本表或视图已存在:1050表“用户”   确实存在(SQL:创建表usersid int unsigned not   auto_increment主键为空,name varchar(255)不为空,   email varchar(255)不为null,password varchar(255)不为null,   remember_token varchar(100)为空,created_at时间戳为空,   updated_at时间戳为null)默认字符集utf8mb4   整理utf8mb4_unicode_ci)

     

在Connection.php第449行中:                                                                                     SQLSTATE [42S01]:基本表或视图已存在:1050表“用户”   阿迪的存在

nishanth@localhost:~/Desktop/html/hutch$ php artisan migrate:rollback
Nothing to rollback.
nishanth@localhost:~/Desktop/html/hutch$ php artisan tinker
Psy Shell v0.8.17 (PHP 7.1.20-1+ubuntu16.04.1+deb.sury.org+1 — cli) by Justin Hileman
>>> Schema::drop('users')
=> null
>>> Schema::drop('password_resets')
=> null
>>> Schema::drop('orders')
=> null
>>> exit
Exit:  Goodbye.
nishanth@localhost:~/Desktop/html/hutch$ php artisan migrate
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
Migrating: 2018_08_18_071213_create_orders_table
Migrated:  2018_08_18_071213_create_orders_table
nishanth@localhost:~/Desktop/html/hutch$ 

还定义方法down()(如果不存在)。
否则,它将显示

  

SQLSTATE [42S02]:找不到基本表或视图:1051未知表'XYZ.ABC'(SQL:删除表ABC

/**
  * Reverse the migrations.
  *
  * @return void
  */
public function down()
{
    Schema::dropIfExists('ABC');
}

答案 6 :(得分:0)

对于仍然无法迁移其数据库的任何人:

假设您有一个文件可以迁移“ abc_migrate.php”。

首先将文件放入名为“ abc_folder”的新文件夹中。 然后,输入此命令 “ php artisan migration --path = database / migrations / abc_folder /”。

您不必在目录路径的最后添加文件名。

完成。希望能帮助到你。

答案 7 :(得分:0)

您无需将迁移文件移动到任何地方,只需更改其文件名即可;例如,增加时间整数,然后使用指向迁移的路径运行migrate命令。例如:php artisan migrate --path="database/migrations/2019_07_06_145857_create_products_table.php"

答案 8 :(得分:0)

就我而言,我只需要从迁移表中删除一行,然后执行

<块引用>

php artisan migrate --path=app/foo/migrations/2014_01_21_143531_create_teams_table.php