我想使用php artisan migrate
进行迁移,但收到错误:
SQLSTATE [42S01]:基表或视图已存在:1050表'用户'已存在
很自然地,我想使用php artisan migrate:rollback
删除我的表,但我得到了:
无法回滚。
到底是什么?它刚才说已经创建了users
表。我该怎么办?我可以用phpmyadmin删除该表,但我想学习如何使用工匠。
感谢您的帮助。
答案 0 :(得分:3)
如果出现此问题,如何使用工匠删除表格,我将告诉您如何首先避免此问题。最后我只是使用phpmyadmin删除了表格。
我在Laravel上观看了一个教程,为了避免错误,我看到了这个:
SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长;最大密钥长度为767字节
我必须在use Illuminate\Support\Facades\Schema;
中添加AppServiceProvider.php
,在Schema::defaultStringLength(191);
函数中添加boot()
。但我认为我可以在defaultStringLength(...)
中放任何数字,所以我放255,并且迁移不起作用。
按照教程中的说法进行操作,编写Schema::defaultStringLength(191);
。然后,您可以使用php artisan migrate
执行迁移,它应该可以正常运行。
答案 1 :(得分:1)
在我的情况下,在Schema::defaultStringLength(191);
方法中定义了boot()
之后没有解决。因为数据库中的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');
}
答案 2 :(得分:1)
解决方案:
>> php artisan migrate:fresh
它将删除所有表并重新创建所有迁移。
答案 3 :(得分:0)
use Illuminate\Support\Facades\Schema;
,在Schema::defaultStringLength(191);
函数中添加boot()
php artisan migrate:fresh
php artisan migrate
解决了!