在我的Laravel应用中,我具有与不同数据库的连接,并且当我需要使用新的虚拟数据(我使用 php artisan migrate:fresh --seed
命令)我总是遇到此错误
SQLSTATE [42S01]:基表或视图已存在:1050表'table_name'已存在
这很奇怪,因为我的迁移类中有down()
方法
class CreateExampleTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('conn2')->create('table_name', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('conn2')->dropIfExists('table_name');
}
}
答案 0 :(得分:0)
如果您使用migrate:refresh
而不是fresh
,它将使用您的down()
方法回滚数据库。
我认为问题不在您的down()
中,而在您的up()
中:它正在尝试创建表,但是具有该名称的表已经存在。
我建议做类似的事情:
if (!Schema::hasTable('tbl_name')) {
// create table
}
您可能还必须指定在迁移中使用的数据库。