문자 코드의 지정 오류로 인해 마이그레이션 파일을 실행할 수 없는 오류에 대한 정보입니다.
3272 단어 Rails
타이틀
1
마크의 비망록
2
투고 기사 제1편
3
현재 문서
오류가 발생했습니다.
An error has occurred
파일을 마이그레이션할 때rails db:migrate
:Error: Specified key was too long; max key length is 767 bytes
오류 문장의 키 길이가 767바이트를 넘었습니다.이전의 자신의 조작을 회상해 보자.
t.string :name, null: false
마이그레이션 파일에 키를 설명합니다.그럼 이 열쇠(:name)가 이상해요.
이름의 글자 수와 관련된 것으로 볼 수 있다.
오류 문장을 검색할 때 아래 문장에 상세한 내용이 있습니다.
https://qiita.com/terufumi1122/items/9ea764618eba01144e09
Rails와CakePHP에서 기본적으로 생성된 255문자의VARCHAR 중 3바이트의utf8에서 255문자×3=765 거의 완전 수납.한편, utf8mb4에서 초과되기 때문에 오류가 발생했습니다.
VARCHAR은 데이터베이스 필드 정의에 사용되는 데이터 유형 중 하나이며 가변 길이 문자열을 나타내는 데이터 유형입니다.
http://e-words.jp/w/VARCHAR.html#:~:text=VARCHAR%E3%81%A8%E3%81%AF%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE,%E3%82%92%E6%84%8F%E5%91%B3%E3%81%99%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%E3%80%82
즉, 이동 파일을 실행하기 위해 열의 종류와 키를 기술해야 한다는 추측이다
이 키 (표의 열) 에 대해 767바이트의 데이터 용량을 확보했는지 여부입니다.
가변 길이이기 때문에 음반마다 용량이 다르지만 767바이트를 넘을 수 없고, null:false에 따라 0바이트도 안 된다.
여기에 상술한 내용을 다시 한 번 인용한다.
Rails와CakePHP에서 기본적으로 생성된 255문자의VARCHAR 중 3바이트의utf8에서 255문자×3=765 거의 완전 수납.한편, utf8mb4에서 초과되기 때문에 오류가 발생했습니다.
Rails에서 255자의 VARCHAR 자동 생성
그리고 문자마다 데이터 크기가 문자 코드에 따라 다르다.
문자 코드utf8은 255자를 생성해도 데이터의 크기는 765바이트이며 가변 길이 용량에 불과하다.
따라서 이번 문자 코드의 지정은utf8mb4로 여겨진다.
응용 프로그램 개발 중
문자 코드 설명이 있는 경로는 다음과 같습니다.
config/database.yml입니다.
가 보다
encoding: utf8mb4
라고 기술했다.ecoding: utf8
구문을 사용합니다.마이그레이션 파일을 다시 실행합니다.
:Error: Table 'users' already exists
불안해서.Sequel Pro를 확인하러 갑니다.
문자 코드와 관련된 기술 부분을 찾았다.

utf8mb4를 유지하는 부분이 있습니다.
데이터베이스를 다시 설정합니다.
rails db:reset
그런 다음 마이그레이션 파일을 실행합니다.rails db:migrate
이번에는 틀린 문장이 나타나지 않았다.
다시 한번 확인을 해보면...
잘utf8이 됐어.
이상은 잘못된 해결입니다.
끝까지 읽어주셔서 감사합니다.
잘못된 인식과 부족한 부분을 지적해 주시기 바랍니다.
Reference
이 문제에 관하여(문자 코드의 지정 오류로 인해 마이그레이션 파일을 실행할 수 없는 오류에 대한 정보입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kawashi23/items/c6547c5f41fe0ecafebd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)