我使用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
表为空,并且不创建新表。我不明白为什么文档在路径中说foo
。 foo
是什么意思,它来自哪里?首先,我认为路径是错误的,因为foo
事物,因为我知道路径是相对于app
文件夹所以我将其更改为app/database/migrations
,但它不起作用。我也尝试了很多其他的路径组合,但没有一个有效。
我走错了路吗?在这种情况下,控制台是否应该显示其他一些有用的消息? foo
是什么意思?我该如何运行迁移?
答案 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。
答案 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:创建表
users
(id
int unsigned not auto_increment主键为空,name
varchar(255)不为空,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