当我运行命令php artisan migrate
时,会导致以下错误
[Illuminate \ Database \ QueryException] SQLSTATE [42S01]:基表或 视图已存在:1050表'用户'已存在(SQL:create table
users
(id
int unsigned not null auto_increment primary key,name
varchar(255)not null,password
varchar(255)not null,remember_token
varchar(100)null,created_at
timestamp null,updated_at
timestamp null)默认值 字符集utf8mb4 collate utf8mb4_unicode_ci)
[PDOException] SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists
我在Windows上使用Laravel 5.4。
答案 0 :(得分:2)
让你知道'用户'表已经存在 - 当你正在运行你的迁移时 - 它正在尝试创建它(但它已经存在)
这通常是因为您之前尝试过运行'php artisan migrate'命令。必须回滚以使这些更改“撤消”,或者清除DB表。
你可以运行:
php artisan migrate:rollback
那应该摆脱所有表 - 然后你可以运行
php artisan migrate
它应该适当地加载所有内容。
替代方法?登录到您的数据库并从数据库中物理删除这些表。然后,您可以再次运行迁移,它将起作用。
一点点问题: 首先检查您的迁移:它应该具有此功能:
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
如果没有,回滚将不会删除用户表,您仍然会遇到此问题(这意味着您必须登录数据库并手动删除表)。
如果使用此命令创建迁移,则会自动包含回滚功能:
php artisan make:migration create_yourtablename_table
答案 1 :(得分:1)
检查您的数据库
如果有'用户'表退出然后DROP
用户table
现在
第1步。要创建迁移,请使用make:migration
命令: - php artisan make:migration create_yourtablename_table
第2步。输入此命令:php artisan migrate
答案 2 :(得分:1)
我遇到了同样的问题,我所做的是在用户和密码恢复迁移中的(向上功能)中注释掉行,然后我尝试了它。我不知道这是否是正确的方法!如果我错了,请纠正我
答案 3 :(得分:1)
来自https://github.com/laravel/framework/issues/21100的答案。
您的问题可以解决 通过更改create_users_table.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//Add this line
Schema::dropIfExists('users');
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
答案 4 :(得分:0)
如果您在该问题中粘贴了确切的代码,那么我可以看到一个简单的拼写错误
email varchar(255) not n ull,
我知道我给出的愚蠢回答。 但你可以使用:
php artisan migrate --force
php artisan migrate:refresh
php artisan migrate:reset
更好地使用它。可能它会起作用:
php artisan migrate:rollback
答案 5 :(得分:0)
使用
php artisan migrate:rollback