php 数据库状态[42S01]:基表或视图已存在:1050表'payments'已经存在(SQL:创建表付款

rekjcdws  于 2023-01-29  发布在  PHP
关注(0)|答案(8)|浏览(181)

当我迁移表时,我看到这个错误,
数据库状态[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');
    }
}

Error

7lrncoxx

7lrncoxx1#

如果你在Laravel 5.5上,你可以执行php artisan migrate:fresh。这个命令将删除所有的表,然后重新创建它们。我希望它能有所帮助。

vc6uscn9

vc6uscn92#

如果您的数据库中有一个表,并且不希望migrate创建它,您可以通过在创建前选中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();

    });
}
14ifxucb

14ifxucb3#

如果要重新创建表,请先运行php migrate:rollback以删除现有表。此命令将在迁移中运行down()方法。
然后运行php migrate再次创建表。

ylamdve6

ylamdve64#

在我的例子中,在php migrate:rollback之后得到了Nothing to rollback,并且没有解决。因为数据库中的migrations表是空的。所以解决方案是打开来自 composer 的修补程序

$ 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行:数据库状态[42S01]:基表或视图已存在:1050表'users'已存在(SQL:创建表usersid整数无符号非空自动递增主键,name变量(255)非空,email变量(255)非空,password变量(255)非空,remember_token变量(100)空,created_at时间戳空,updated_at时间戳为空)默认字符集utf8mb4校对utf8mb4_unicode_ci)
在Connection.php第449行:数据库状态[42S01]:基表或视图已存在:1050表'users'已存在

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()不存在,也要定义它。
否则,它会显示
数据库状态[42S02]:未找到基表或视图:1051未知表'XYZ. ABC'(SQL:跌落台ABC

/**
  * Reverse the migrations.
  *
  * @return void
  */
public function down()
{
    Schema::dropIfExists('ABC');
}
x33g5p2x

x33g5p2x5#

先做php工匠迁移:回滚;然后到php我的管理面板,并删除剩余的表。然后做php工匠迁移:新鲜它会工作:-)

um6iljoc

um6iljoc6#

这是我的场景:
照明\数据库\查询异常:数据库状态[42S01]:基表或视图已存在:1050表'migrations'已存在(SQL:创建表migrationsid bigint无符号非空自动递增主键,created_at时间戳空,updated_at时间戳空)默认字符集utf8mb4排序'utf8mb4_unicode_ci')
解决方案:
1.删除位于您的项目/数据库/迁移/2020_02_04_031638_创建迁移表. php中的文件
1.运行php artisan migrate,然后你的新表将在你的数据库中创建

nwo49xxi

nwo49xxi7#

如果您使用的是laravel 9版本,请使用此命令
php工匠迁移:新鲜
这个命令会对你有帮助的,那是我的工作.

68bkxrlz

68bkxrlz8#

根据错误,数据库表已存在。以下是可能有用的解决方案。

**解决方案1:**手动删除整个数据库表(包括migrations表),然后重新运行php artisan migrate命令。
**解决方案2:**如果您在一些现有的表中有一些记录,并且不想丢弃/删除它们,那么,从phpMyAdmin或相关的目录中点击migrations表,查看迁移表的列表。删除/编辑导致错误的特定表,然后再次运行php artisan migrate命令。
**解决方案3:**由于某些原因,您可能需要运行特定的迁移文件,下面的命令就是您所需要的。

php artisan migrate:refresh --path=/database/migrations/file-name.php
记住用实际文件名替换file-name.php
希望这对某人有帮助。:)

相关问题