Specifications:
Description:
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
Steps To Reproduce:
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
Problem
It Creates users table and give error but not creating lists table
I Solved My Problem Myself by Changing My 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');
}
}
Here are the steps I took to solve the same issue:
In the console I wrote php artisan tinker
Then, again in the console, Schema::drop('users')
At the end php artisan migrate
and it all worked.
The simple way to solve this problem is run the following command
php artisan migrate:fresh
Following command solved my problem:
1. php artisan tinker
2. Schema::drop('your_table_name')
3. php artisan migrate
You can skip migrate the table if table exist in database by add this code:
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();
});
}
Here are the steps I took to solve the same issue:
php artisan make:migration create_tableName_table --create=tableName.
php artisan migrate.
appear error,you can drop all file in migration and all table in database.
create new table as 1.
finish. okay.
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();
});
}
Use !Schema::hasTable('users') ,It will check whether a table already exist in database or not. If you don't want to drop table then it is a good idea.
Step 1:
php artisan migrate:reset
Step 2: Go to your database using PHPmyadmin (or similar) and delete all remaining tables - including the migration table.
Step 3:
php artisan migrate
I have different solution, i delete migration table, here my solution
<?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');
}
}
just delete those columns first from database. and run composer update . and then finally run php artisan migrate it would solve your problem. the simplest solution for your problem.
There are two possible solutions for this as mentioned on this link:
https://www.codespeaker.com/laravel-framework/solutions-for-common-errors-on-artisan-commands/
First is rollback
php artisan migrate:rollback
Second is dropping of tables.
Solution:
php artisan migrate
Agree with Nitesh's answer but I think that's not the best practice to drop the table everytime for no reason. We could also use simple "if" check with condition Schema::hasTable('users') according to the docs . So we can use it as:
<?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');
}
}
This solution will also be feasible in the scenario when you will already have a table and need some modification then you will be able to do anything in the else statement as well.
Migration errors usually occur when using php artisan migrate
and your migration has an error.
Within Laravel, there are some ways to reverse something that has been performed, especially migrations to more robust databases like MySql, for example.
One way to be reversing the step taken
php artisan migrate
is to run the
php artisan migrate: rollback
It automatically reverses the last migrate performed You also have the possibility to delegate how many steps will be reversed with the step parameter.
The number says how many steps will be reversed
php artisan migrate: rollback --step=1
通过命令 php artisan make:migration create_category_table 创建你的迁移然后在你的数据库/迁移中设置你需要的字段和数据库,然后运行这个命令 pho artisan migrate --pretend 它将显示 sql 语句,复制类别的 sql 语句并将其粘贴到数据库中在 sql 中,只需单击运行,您的迁移就会在那里,无需删除用户表
Change your Mysql Engine Setting
In config/database.php
, change your mysql engine setting to: 'engine' => 'innodb row_format=dynamic'
.
Note: This is applicable to Laravel 5.2.14+
Sometime I get the same problem as yours and after I examine it's because sometimes I'm to lazy to type and copy paste the code from 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();
});
and I forgot to change the table name from this code
Schema::create('users',
To This
Schema::create('what_ever_you_want_to_name_it',
I hope this could help
you can reset everything by using this command
php artisan migrate:reset
and then you can run this command.
php artisan migrate
remember reset will delete your users table. Please do not use manual approach to delete table or do anything with database. Laravel allows us to do everything by using commands and that's they beauty of it. If you want details about using Laravel migrations then please check this link.
https://laramatic.com/how-to-use-migrations-in-laravel-code-example/
Simple Solutions
Problem:
SQLSTATE[42S01]: Base table or view already exists: 1050 Table Assign_Students already exists.
Here I had a problem with Assign_Students
table you may have any
X Y Z Table
ANS: DROP YOUR X Y Z Table from your SQLDB
as I did from my MYSQL I DROP Assign_Students
and then I created my New table Example:
php artisan make:model EmployeeSallaryLog -m
Now when you do:
php artisan migrate`
You will find both tables like:
1) Assign_Students
2) EmployeeSallaryLog
For Laravel 8.0, none of the earlier answers worked for me. Then I noticed the line below in the error details when running php artisan migrate
:
Loading stored database schema: /Users/spedley/Sites/monkeys/database/schema/mysql-schema.dump
I deleted the mysql-schema.dump file, ran php artisan migrate
again and it worked.
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists (SQL: create table users
( id
bigint unsigned not null auto_increment primary key, name
varchar(191) not null, email
varchar(191) not null, email_verified_at
timestamp null, password
varchar(191) not null, remember_token
varchar(100) null, created_at
timestamp null, updated_at
timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')
The code below works like magic. It runs nicely.
id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }To avoid such error, I think it's better to call Schema::dropIfExists('table-name');
before Schema::create(...)
in your migration file. Then try to rollback your migration and migrate again your tables.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.