Error기록 노트/PHP | Laravel

php artisan migrate error / SQLSTATE[42000]: Syntax error or access violation: 1170 BLOB/TEXT column 'u_id' used in key specification without a key length (SQL: alter table `posts` add unique `posts_u_id_unique`(`u_id`))

에러노트 2022. 12. 5. 17:11

오늘은 migation과 씨름 중인 에러노트입니다. 

MAC valet과 homebrew를 통해 라라벨 설치부터 깃허브 연동, VS Code 연결 셋팅까지 모두 마치고 드디어 DB부터 시작중입니다.

수많은 에러들을 만났지만, 이 친구는 앞으로도 자주 만날 것 같아서 써두려고 합니다. 이외의 다른 에러도 있으니 참고 바랍니다 :)

 

1170 error의 경우, 번역기를 돌렸을 때 다음과 같이 해석됩니다.

[error 내용]
SQLSTATE[42000]: Syntax error or access violation: 1170 BLOB/TEXT column 'u_id' used in key specification without a key length (SQL: alter table `posts` add unique `posts_u_id_unique`(`u_id`))

[해석]
SQLSTATE[42000]: 구문 오류 또는 액세스 위반: 키 길이 없이 키 사양에 사용된 1170 BLOB/TEXT 열 'u_id'(SQL: 테이블 `posts` add unique `posts_u_id_unique`(`u_id`))

아마  text로 쓴 u_id에 unieque를 붙임으로 인해 생긴 오류인가 봅니다. 키 길이가 없다고 하는 것을 보니, text형식에는 붙여선 안되는 것으로 보입니다.

php artisan migrate시 에러가 발생한 모습

이제 이유를 찾았으니 오류를 해결해봅시다.

Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->timestamps();//글작성 시간
            $table->string('u_id')->unique();//string으로 수정하니 정상적으로 동작하였다.
            $table->text('title');//제목
            $table->text('b_content');//내용
});

다음과 같이 문제 되었던 부분을  string으로 변환하였습니다. 과연 동작이 될까요?

성공적으로 동작이 되었습니다.(전 다른 부분에서 문제가 있지만 연관이 없는 오류라 따로 언급하지 않겠습니다.)

 

MySQL과 Oracle을 공부하긴 했으나 이번에 공부하는 건 자료형이 워낙 다양해서 신기하네요. id(); 처음보고 넘 충격이었던...

아무튼 에러가 요즘 넘쳐나서 해결방법을 제대로 찾는 경우만 올리고 있는데, 애매한 경우는 해결방법이 어느게 맞았던 것인지를 몰라 올리지 못하고 있답니다......ㅎ..

오늘도 봐주셔서 감사합니다. :)