我正在尝试使用Laravel Migration创建SQL表,但它不会让我。
这是错误:
SQLSTATE [42S01]:基表或视图已存在:1050表 'mytable'已经存在
这是我的代码:
Schema::create('mytable', function (Blueprint $table) {
$table->increments('id');
$table->foreign('othertable_id')
->references('id')->on('othertable')
->onDelete('cascade');
$table->string('variable');
$table->timestamps();
});
}
{
Schema::drop('mytable');
}
我还检查了其他迁移是否被称为“mytable”,但它们不是,所以我不确定它来自何处。
我尝试了以下内容:
首先
php artisan migrate:refresh
哪个给了我一个错误
然后我删除了整个数据库altogheter并使用了:
php artisan migrate
仍然出现错误
答案 0 :(得分:8)
在laravel 5.5和>中你可以使用:
$ php artisan migrate:fresh
// ( not migrate:refresh wich is a different command)
此命令首先删除所有表,然后重新运行所有迁移
答案 1 :(得分:2)
我既没有删除迁移条目,也没有从数据库中手动删除表 就我而言,解决方案是打开作曲家的修补程序
$ 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行中: SQLSTATE [42S01]:基本表或视图已存在:1050表“用户” 确实存在(SQL:创建表
users
(id
int unsigned not auto_increment主键为空,name
varchar(255)不为空,password
varchar(255)不为null,remember_token
varchar(100)为空,created_at
时间戳为空,updated_at
时间戳为null)默认字符集utf8mb4 整理utf8mb4_unicode_ci)在Connection.php第449行中: SQLSTATE [42S01]:基本表或视图已存在:1050表“用户” 已经存在
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()
(如果不存在)。
否则,它将显示
SQLSTATE [42S02]:找不到基本表或视图:1051未知表'XYZ.ABC'(SQL:删除表
ABC
)
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('ABC');
}
答案 2 :(得分:2)
尝试一下
在 Up() 函数内的 Up() 函数中添加以下行:
Schema::dropIfExists('mytable');
,然后为 mytable创建模式。
即在执行以下代码之前。
Schema::create('mytable', function (Blueprint $table)
答案 3 :(得分:1)
错误表示数据库中已存在表mytable
。您应该回滚迁移:
php artisan migrate:rollback
再次迁移:
php artisan migrate
答案 4 :(得分:1)
执行composer dump
,从数据库中手动删除表,并删除要从迁移表中删除的表的迁移条目,然后重新运行迁移以查看发生的情况。
答案 5 :(得分:1)
如果您在数据库中有该表并且不想迁移创建该表,则可以通过在创建之前检查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();
});
}
答案 6 :(得分:-1)
转到app> Providers> AppServiceProvider.php并将其复制粘贴到顶部:
use Illuminate\Support\Facades\Schema;
然后转到其中名为“ Boot()”的函数并复制并粘贴此代码:
Schema::defaultStringLength(191);
现在转到您的数据库并完全删除数据库,然后转到控制台:
php artisan cache:clear
php artisan config:cache
然后创建一个具有相同名称的新数据库,然后回到consol并编写:
php artisan migrate (congrats your database now shows em all)