Я пытаюсь настроить свои таблицы в базе данных MySQL, и в настоящее время я создаю файлы миграции, используя Laravel 5.8.Когда я запускаю новую миграцию с помощью
php artisan migrate
, все миграции проходят гладко, и мой внешний ключ правильно добавляется в мою таблицу
![https://i.imgur.com/HIlR4i9.png](https://i.stack.imgur.com/jmfxK.png)
Однако, когда я хочу обновить свою базу данных с помощью
php artisan migrate: refresh
Я сталкиваюсь с этимошибка
Подсветка \ База данных \ QueryException: SQLSTATE [23000]: Нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа (SQL: удалить таблицу, если существует services
)
То, что я пробовал до сих пор:
Разделение моих внешних ключей в разных файлах миграции так, чтобы они приходили после моих таблиц, которые не имеют внешнихключи в них
Файловая архитектура в Visual Studio Код
![File Architecture](https://i.stack.imgur.com/FLhFE.png)
добавление -> onDelete ('каскад') на каждом внешнем ключе в моих функциях up () (код ниже)
My Services миграционный файлe
class CreateServicesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('services', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('description');
$table->integer('price');
$table->boolean('multiple_times');
$table->boolean('location');
$table->integer('animal_type_id')->unsigned();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('services');
}
}
Мой AnimalType Внешний ключ
class ForeignKeyAnimalTypeServices extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('services', function($table){
$table->foreign('animal_type_id')->references('id')->on('animal_types')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('services', function(Blueprint $table){
$table->dropForeign(['animal_type_id']);
});
}
}
Мой Сервис Модель
class Service extends Model
{
protected $table = 'services';
protected $fillable = [
'name', 'description', 'price', 'multiple_times', 'location'
];
public function animalType()
{
return $this->belongsTo('App\AnimalType');
}
}
Хотя мои миграциисозданы, я не могу обновить мои миграции, если мне нужно (или заполнить мой стол).Я хочу иметь возможность обновить мои файлы, не получая эту ошибку.Я все еще довольно новичок в программировании, мои извинения, если отсутствует информация.