IT

외부 키 제약 조건을 설정하는 방법이 라벨 5.8에서 잘못 형성되었습니다.

itgroup 2023. 7. 27. 21:53
반응형

외부 키 제약 조건을 설정하는 방법이 라벨 5.8에서 잘못 형성되었습니다.

나는 그곳에 옮겨야 할 테이블이 있습니다.내가 그 테이블을 서버 데이터베이스로 마이그레이션하려고 하면 일반 오류: 1005가 표시되고 아래에 오류와 서버 세부 정보를 제공합니다.제가 실수 없이 이주할 수 있도록 도와주세요.

1.)사용자

Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

2.)가짜는

Schema::create('companies', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->longText('description');
            $table->unsignedInteger('user_id');
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users');
        });

3.1987년

Schema::create('projects', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->longText('description');
            $table->unsignedInteger('company_id');
            $table->unsignedInteger('user_id');
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users');
            $table->foreign('company_id')->references('id')->on('companies');
        });

서버 상세 내역

server: 127.0.0.1 via TCP/IP
Server type: MariaDB
Server connection: SSL is not being used Documentation
Server version: 10.1.38-MariaDB - mariadb.org binary distribution
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)
DB Name: laravel

오류:

 Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1005 Can't create table `laravel`.`#sql-91c_30` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `companies` add constraint `companies_user_id_foreign` foreign key (`use
r_id`) references `users` (`id`))

제가 보기에, 당신이 bigInteger의 PK와 정수의 외부 키를 생성하고 있기 때문에 데이터 유형 불일치의 불일치 문제가 있습니다.

Schema::create('companies', function (Blueprint $table) {
...
$table->unsignedBigInteger('user_id');
});

그리고 다른 표에서는

Schema::create('projects', function (Blueprint $table) {
...
$table->unsignedBigInteger('company_id');
$table->unsignedBigInteger('user_id');
});

이렇게 하고 다시 확인합니다.

언급URL : https://stackoverflow.com/questions/55805372/how-to-set-foreign-key-constraint-is-incorrectly-formed-in-laravel-5-8

반응형