laravel SQLSTATE[42S01]: 基表或视图已经存在:1050 表 'payments' 已经存在(SQL:创建表 `payments`
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/47729713/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'payments' already exists (SQL: create table `payments`
提问by
When I migrate a table I see this error,
当我迁移表时,我看到此错误,
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'payments' already exists (SQL: create table
payments
SQLSTATE[42S01]: 基表或视图已经存在:1050 表 'payments' 已经存在(SQL:创建表
payments
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePaymentsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('payments', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string('resnumber');
$table->string('course_id')->default('vip');
$table->string('price');
$table->boolean('payment')->default(false);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('payments');
}
}
采纳答案by Alexey Mezenin
If you want to recreate the table, run php migrate:rollback
first to delete the existing one. This command will run the down()
method in the migration.
如果要重新创建表,php migrate:rollback
请先运行以删除现有表。此命令将运行down()
迁移中的方法。
Then run php migrate
to create the table again.
然后php migrate
再次运行以创建表。
回答by larsbadke
If you are on Laravel 5.5 you can do php artisan migrate:fresh
. This command will drop all tables und then create them again. I hope it helps.
如果您使用的是 Laravel 5.5,则可以执行php artisan migrate:fresh
. 此命令将删除所有表,然后再次创建它们。我希望它有帮助。
回答by Mohsen
If you have table in DB and dont want migrate create it, you can ignore it by check Schema::hasTable before create
如果您在数据库中有表并且不想迁移创建它,您可以通过在创建之前检查 Schema::hasTable 来忽略它
public function up()
{
if(Schema::hasTable('products')) return; //add this line to migration file
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
回答by prasanna purohit
first make php artisan migrate:rollback; then go to php my admin panel and drop the remaining table. then do php artisan migrate:fresh it will work :-)
首先使 php artisan migrate:rollback; 然后转到php我的管理面板并删除剩余的表。然后做 php artisan migrate:fresh 它会起作用:-)
回答by Aqua Huang
This is my scenario:
这是我的场景:
Illuminate\Database\QueryException : SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'migrations' already exists (SQL: create table
migrations
(id
bigint unsigned not null auto_increment primary key,created_at
timestamp null,updated_at
timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')
Illuminate\Database\QueryException:SQLSTATE[42S01]:基表或视图已经存在:1050 表'迁移'已经存在(SQL:创建表
migrations
(id
bigint unsigned not null auto_increment 主键,created_at
timestamp null,updated_at
timestamp null)默认字符集utf8mb4 collate 'utf8mb4_unicode_ci')
solution :
解决方案 :
- delete the file located in YOUR-PROJECT/database/migrations/2020_02_04_031638_create_migrations_table.php
- run php artisan migrate, then your new table will create in your database
- 删除位于YOUR-PROJECT/database/migrations/2020_02_04_031638_create_migrations_table.php 中的文件
- 运行php artisan migrate,然后您的新表将在您的数据库中创建
回答by N?s????? ?
In my case after php migrate:rollback
resulted in Nothing to rollback
and didn't solve. Because the migrations
table in the database is empty.
So the solution is open up the tinker from the composer
在我的情况下,php migrate:rollback
导致Nothing to rollback
并没有解决。因为migrations
数据库中的表是空的。所以解决方案是打开作曲家的修补程序
$ php artisan tinker
>>> Schema::drop('users')
>>> Schema::drop('password_resets')
>>> Schema::drop('orders')
>>> exit
php artisan migrate
Here is the result of the above commands executed
下面是上面命令的执行结果
nishanth@localhost:~/Desktop/html/hutch$ php artisan migrate
In Connection.php line 647: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists (SQL: create table
users
(id
int unsigned not null auto_incr ement 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) default character set utf8mb4 collate utf8mb4_unicode_ci)In Connection.php line 449: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' alre ady exists
在 Connection.php 第 647 行:SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists (SQL: create table
users
(id
int unsigned not null auto_incr ement 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)在 Connection.php 第 449 行:SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' alre ady exists
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$
Also define the method down()
, if it doesn't exist.
Otherwise, it'll show
还要定义方法down()
,如果它不存在。
否则会显示
SQLSTATE[42S02]: Base table or view not found: 1051 Unknown table 'XYZ.ABC' (SQL: drop table
ABC
)
SQLSTATE[42S02]:未找到基表或视图:1051 未知表 'XYZ.ABC'(SQL:删除表
ABC
)
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('ABC');
}