规格:
说明
C:/Users/user/code/blog/>php artisan migrate
[Illuminate\Database\QueryException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists (SQL: create table users (id int unsigned not null aut
o_increment primary key, name varchar(255) not null, email varchar(255) not null, password varchar(255) not null, remember_token varchar
(100) null, created_at timestamp null, updated_at timestamp null) default character set utf8mb4 collate utf8mb4_unicode_ci engine = InnoDB R
OW_FORMAT=DYNAMIC)
[PDOException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists
重现步骤:
C:/Users/user/code/blog/>laravel new website
C:/Users/user/code/blog/>php artisan make:migration create_lists_table --create=lists
C:/Users/user/code/blog/>php artisan migrate
问题
它创建用户表并给出错误但不创建列表表
答案 0 :(得分:10)
以下是我为解决同一问题所采取的步骤:
在控制台中我写了php artisan tinker
然后,再次在控制台中Schema::drop('users')
最后php artisan migrate
这一切都奏效了。
答案 1 :(得分:7)
我自己解决了我的问题 通过更改我的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()
{
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');
}
}
答案 2 :(得分:2)
以下是我为解决同一问题所采取的步骤:
php artisan make:migration create_tableName_table --create = tableName。
php artisan migrate。
出现错误,您可以删除迁移中的所有文件和数据库中的所有表。
将新表格创建为1。
光洁度。好的。
答案 3 :(得分:1)
首先从数据库中删除这些列。并运行composer update。然后最后运行php artisan migrate它会解决你的问题。最简单的解决方案。
答案 4 :(得分:1)
解决此问题的简单方法是运行以下命令
php artisan migration:fresh
答案 5 :(得分:1)
以下命令解决了我的问题:
ChildViewModel_A
答案 6 :(得分:1)
if (!Schema::hasTable('users')) {
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
使用!Schema :: hasTable('users'),它将检查数据库中是否已存在表。 如果您不想放桌子,那是个好主意。
答案 7 :(得分:1)
如果表已存在于数据库中,则可以跳过迁移表,方法是添加以下代码:
public function up()
{
if(Schema::hasTable('users')) return; //add this line to your database file
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
答案 8 :(得分:0)
您可以使用此命令重置所有内容
php artisan migrate:reset
然后你就可以运行这个命令了。
php artisan migrate
记住重置将删除您的用户表。请不要使用手动方法删除表或对数据库进行任何操作。 Laravel 允许我们通过使用命令来做任何事情,这就是它的美妙之处。如果您想了解有关使用 Laravel 迁移的详细信息,请查看此链接。
https://laramatic.com/how-to-use-migrations-in-laravel-code-example/
答案 9 :(得分:0)
有时我遇到和你一样的问题,在我检查之后是因为有时我懒得输入并复制粘贴 create_user_table.php 中的代码
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
我忘记更改此代码中的表名
Schema::create('users',
到这里
Schema::create('what_ever_you_want_to_name_it',
希望能帮到你
答案 10 :(得分:0)
更改Mysql引擎设置
在config/database.php
中,将您的mysql引擎设置更改为:
'engine' => 'innodb row_format=dynamic'
。
注意:这适用于Laravel 5.2.14 +
答案 11 :(得分:0)
通过命令创建迁移 PHP工匠make:migration create_category_table 然后在数据库/迁移中设置必要的字段和数据库,然后运行此命令 照片工匠移民-假装 它将显示sql语句,复制类别的sql语句并将其粘贴到sql中的数据库中,然后单击运行,您的迁移就在那里了,无需删除用户表
答案 12 :(得分:0)
使用php artisan migrate
时通常会发生迁移错误,并且您的迁移存在错误。
在Laravel中,有一些方法可以扭转已经发生的事情 尤其是迁移到更强大的数据库(例如MySql)时, 例如。
一种逆转已采取步骤的方法
php artisan migrate
是要运行
php artisan migrate: rollback
它会自动撤消上一次执行的迁移 您还可以使用step参数委派要撤消的步骤数。
数字表示将撤消多少步
php artisan migrate: rollback --step=1
答案 13 :(得分:0)
同意Nitesh的回答,但我认为这不是每次无缘无故掉桌子的最佳实践。我们还可以根据docs对条件Schema :: hasTable('users')使用简单的“ if”检查。因此我们可以将其用作:
<?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()
{
if(!Schema::hasTable('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');
}
}
如果您已经有一个表并需要进行一些修改,那么您也可以在else语句中执行任何操作。
答案 14 :(得分:0)
解决方案:
php artisan migrate
答案 15 :(得分:0)
此链接上提到了两种可能的解决方案:
https://www.codespeaker.com/laravel-framework/solutions-for-common-errors-on-artisan-commands/
首先是回滚
php artisan migration:rollback
第二个是删除表。
答案 16 :(得分:0)
我有不同的解决方案,我删除迁移表,这里是我的解决方案
<?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()
{
Schema::dropIfExists('migration');
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');
}
}