난 레일 5 월 1 일 응용 프로그램을 UUID를 사용하여 기본 active_record 대신 증분 ID로 시작하도록 변환 중입니다.레일 5 uuid 문제와 sqlite
나는 id: :uuid
class CreateProjects < ActiveRecord::Migration[5.1]
def change
create_table :projects, id: :uuid do |t|
t.string :title
t.text :description
t.timestamps
end
end
end
내가 자극에 페이지를 사용하도록 의도 한대로 나는 'UUID - OSSP'와 'pgcrypto'을 지원하기 위해 마이그레이션 파일을 추가 한을 이용할 수 있도록 마이그레이션 파일을 변경했습니다.
class EnablePgcryptoExtension < ActiveRecord::Migration[5.1]
def change
enable_extension 'uuid-ossp'
enable_extension 'pgcrypto'
end
end
하지만 개체를 만들려고 할 때 ID가 null 인 것처럼 오류가 발생합니다.
ActiveRecord::NotNullViolation: SQLite3::ConstraintException: NOT NULL constraint failed: projects.id: INSERT INTO "projects" ("created_at", "updated_at") VALUES (?, ?)
schema.rb 알려진 유형
# Could not dump table "projects" because of following StandardError
# Unknown type 'uuid' for column 'id'
내가 문자열 유형 대신 sqlite3를위한 UUID를 사용하여 시작할 수 제안이 아닌 'UUID'고 힌트를 제공합니다,하지만 난에 의도 프로덕션을 위해 포스트그레스를 사용하고 uuids를 사용하고 싶습니다.
dev에서 pg를 사용해야합니까, 아니면 다른 방법이 있습니까?
는 PostgreSQL의 사용에 대한하려는 경우 ...
뮤 너무 짧은에서 말했듯이, 당신은 개발 플랫폼 및 생산 일 사이에 동일한 환경을 사용해야합니다, 또는 당신은 많은 문제에 직면하고 있습니다 프로덕션 환경에서는 개발 환경과 테스트 환경에서이를 실제로 사용해야합니다. PostgreSQL과 SQLite 간에는 많은 차이가 있습니다. Rails는 3 가지 환경 모두에서 동일한 데이터베이스를 사용하지 않는다는 사실로부터 당신을 보호 할 수 없으며 그렇게하지 못할 수도 있습니다. 이와 같은 사소한 데이터 유형 문제는 귀하의 우려를 덜어 줄 것입니다. –