반응형
Larabel 5 마이그레이션 식별자 이름이 너무 깁니다.
다음 마이그레이션을 실행하려고 합니다.
public function up()
{
Schema::create('lifestyle_questions', function(Blueprint $table)
{
$table->increments('id');
$table->string('question');
$table->timestamps();
});
Schema::create('lifestyle_question_answers', function(Blueprint $table)
{
$table->increments('id');
$table->integer('lifestyle_question_id')->unsigned();
$table->foreign('lifestyle_question_id')->references('id')->on('lifestyle_questions');
$table->string('answer');
$table->timestamps();
});
Schema::create('user_lifestyle_question_answers', function(Blueprint $table)
{
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('lifestyle_question_answer_id')->unsigned();
$table->foreign('lifestyle_question_answer_id')->references('id')->on('lifestyle_question_answers');
});
}
다만, 다음의 에러가 표시됩니다.
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'user_lifestyle_question_answers_lifestyle_question_answer_id_foreign' is too long (SQL: alter table `user_lifestyle_question_answers` add constraint user_lifestyle_question_answers_lifestyle_question_answer_id_foreign foreign key (`lifestyle_question_answer_id`) references `lifestyle_question_answers` (`id`))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'user_lifestyle_question_answers_lifestyle_question_answer_id_foreign' is too long
커스텀 인덱스 이름을 두 번째 파라미터로 foreign() 메서드에 전달할 수 있습니다.또는 더 짧은 테이블/열 이름을 사용합니다.
예를 들어 다음과 같은 작업을 수행해야 합니다.
public function up()
{
Schema::create('lifestyle_questions', function(Blueprint $table)
{
$table->increments('id');
$table->string('question');
$table->timestamps();
});
Schema::create('lifestyle_question_answers', function(Blueprint $table)
{
$table->increments('id');
$table->integer('lifestyle_question_id')->unsigned();
$table->foreign('lifestyle_question_id', 'lq_id_foreign')->references('id')->on('lifestyle_questions');
$table->string('answer');
$table->timestamps();
});
Schema::create('user_lifestyle_question_answers', function(Blueprint $table)
{
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('lifestyle_question_answer_id')->unsigned();
$table->foreign('lifestyle_question_answer_id', 'lqa_id_foreign')->references('id')->on('lifestyle_question_answers');
});
}
언급URL : https://stackoverflow.com/questions/30170268/laravel-5-migration-identifier-name-too-long
반응형
'source' 카테고리의 다른 글
SQL - 특정 조건을 가진 행을 선택하는 방법 (0) | 2022.12.18 |
---|---|
FFT 출력 이해 (0) | 2022.12.18 |
매크로에서 1과 0을 정의하기 위해 3진 연산자를 사용하는 이유는 무엇입니까? (0) | 2022.12.18 |
도커 업데이트 후 Mysql 테이블이 없음: "TableName이 엔진에 없습니다." (0) | 2022.12.18 |
PHP를 사용하여 한 달 중 처음과 마지막 날짜를 찾는 방법은 무엇입니까? (0) | 2022.12.08 |