Я работаю с Laravel, и когда я запускаю php artisan migrare, я получаю эту ошибку:
Освещение \ Database \ QueryException: SQLSTATE [42804]: Несоответствие типа данных: 7 ОШИБКА: внешний ключ ограничение "clients_record_id_foreign" не может быть реализовано. ДЕТАЛИ: ключевые столбцы "record_id" и "id" имеют несовместимые типы: uuid и bigint. (SQL: изменить таблицу "клиенты", добавить ограничение "clients_record_id_foreign", внешний ключ ("record_id") ссылается на "записи" ("id") в каскаде удаления)}
Я не уверен, как решить это. Кто-нибудь может мне помочь?
Это мои файлы миграции.
create_records_table. php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateRecordsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('records', function (Blueprint $table) {
//$table->bigIncrements('id');
$table->uuid('id')->primary();
$table->uuid('device_site_id');
$table->foreign('device_site_id')->references('id')->on('device_site')->onDelete('cascade');
$table->string('gw_address',16);
$table->string('gw_port',6);
$table->string('gw_id');
$table->string('ip',16);
$table->string('mac',18);
$table->string('url');
$table->string('user_agent');
$table->timestamps();
});
DB::statement('ALTER TABLE records ALTER COLUMN id SET DEFAULT uuid_generate_v4();');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('records');
}
}
create_clients_table. php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateClientsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('clients', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->uuid('record_id');
$table->foreign('record_id')->references('id')->on('records')->onDelete('cascade');
$table->string('name');
$table->string('telephone');
$table->string('email');
$table->string('gender');
$table->timestamps();
});
DB::statement('ALTER TABLE clients ALTER COLUMN id SET DEFAULT uuid_generate_v4();');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('clients');
}
}