이것은 Devise를 처음 설치하고 rake db:migrate
을 실행할 때 나타나는 오류입니다.Devise rake db : 사용자 테이블의 중복 열로 인해 마이그레이션이 실패합니다. - Rails 3.1
== AddDeviseToUsers: migrating ===============================================
-- change_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: duplicate column name: email: ALTER TABLE "users" ADD "email" varchar(255) DEFAULT '' NOT NULL
이것은 테스트 데이터 일 뿐이므로 데이터베이스의 해당 열을 삭제하고 다시 실행할 수는 있습니다. 매우 Railsy 인 것처럼 보입니다 - 내 스테이징 서버 (내 앱이있는 유일한 다른 서버)가 localhost
과 동기화되지 않는 이유만으로도 그렇습니다.
또한 다른 컬럼과 충돌이 있으면 어떻게 될까요?
따라서 마이그레이션을 실행하기 전에이 User
테이블의 스키마가 있다고 가정하면 어떻게 처리해야합니까? 이름 바꾸기를 수행하는 일종의 마이그레이션이 있습니까?
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# email :string(255)
# f_name :string(255)
# l_name :string(255)
# username :string(255)
# role_id :integer
# picture :string(255)
# about_me :string(255)
# website :string(255)
# created_at :datetime
# updated_at :datetime
#
'db : migrate'를 실행하기 전에 그 스키마가있는 'User' 모델을 가지고 있었는데 아무 일도 없었습니다. 테이블에 기존 정보가 저장된 사용자도있었습니다. 그러나 기존 사용자 모델에 Devise를 설치하려고하므로이 오류가 발생합니다. 그래서 네,': email' 칼럼이 있다는 것을 압니다. 난 그냥 그것을 무시하거나 수정해야 할 방식으로 수정하고 싶습니다. – marcamillion
당신은 건너 뛸 수 있지만 마이 그 레이션에서 우리의 라인을 주석. 그 다음에는 rake db : migrate를 다시 실행합니다. – Benjamin
그래도 여기와 같은 문제는 전자 메일 테이블이 devise 마이그레이션에서 만들어지는 줄을 주석 처리 한 것입니다. # t.string : email, : null => false, : default => "" – mattwallace