[Rails] my sql 테이블과 migration 파일을 삭제했을 때 발생한 버그 해결 단계
Rails 6.0.3.1
루비 2.6.3
현재 오리지널 앱 제작 중.
그 때 잘못 만들어 버렸다. users_artists라는 테이블과 마이그레이션 파일을 삭제하려고 할 때 발생한 오류 내용을 정리해 보았습니다.
터미널.
% rails db:rollback STEP=5
· migration 파일을 삭제하기 위해 터미널에서 rollback을 실행.
터미널.
% rails db:migrate:status
・확인을 위해, status를 상기 커맨드로 확인한 바, 한 곳만 결함을 발견
터미널.
Status Migration ID Migration Name
--------------------------------------------------
up 000 ********** NO FILE **********
down 20201014111144 Devise create users
down 20201014111251 Devise create artists
down 20201014121517 Create events
down 20201020102544 Create bookmarks
↑한 곳만 status가 up이 되어 있어, 파일명도 왠지 NO FILE로서 남아 버렸다
↑상기는 그 때에 남아 버린 schema 파일의 내용
・version의 표시가 사라진 상태로 down이 되지 않고 남아 버리고 있었다
원래이 파일 이름에는 MigrationID가 있어야합니다.
여기에서 "000"이되었습니다.
【오류 해결 순서】
①status를 down으로 하기 위해 db/migrate하에 새로 이름을 "000_create_users_artists.rb"로 migration 파일을 작성.
다른 migration 파일의 이름과 같게하기 위해서 create를 이름의 선두에 부여해 이하와 같이 기술했습니다.
000_create_users_artists.rb
class CreateUsersArtists < ActiveRecord::Migration[6.0]
def change
create_table :users_artists do |t|
t.integer :user_id
t.integer :artist_id
t.timestamps
end
end
end
② 다시
rails db:migrate:status
를 실행. 아래와 같이 터미널 위에서 up 부분의 MigrationName이 Create users artists
로 바뀌고 있는 것을 확인할 수 있었습니다.터미널.
Status Migration ID Migration Name
--------------------------------------------------
up 000 Create users artists
down 20201014111144 Devise create users
down 20201014111251 Devise create artists
down 20201014121517 Create events
down 20201020102544 Create bookmarks
③ 다시 status를 down으로 하기 위해 아래의 커맨드로 파일명을 지정하여 실행.
터미널.
% rails db:migrate:down VERSION=000_create_users_artists.rb
④ 다시 지정한 파일의 status가 down이 되어 있는지 확인을 하여 불필요하다
000_create_users_artists.rb
파일을 삭제하면 OK! !터미널.
Status Migration ID Migration Name
--------------------------------------------------
down 000 Create users artists
down 20201014111144 Devise create users
down 20201014111251 Devise create artists
down 20201014121517 Create events
down 20201020102544 Create bookmarks
⑤ 마지막으로
rails db:migrate
를 실행하여 테이블을 다시 작성하고 종료합니다.※정리※
schema파일에 실수로 남은 기술 내용과 삭제하기 위해서 작성한 파일명이나 컬럼명의 기술 내용을 동일하게 하지 않으면 잘 데이터가 지울 수 없었기 때문에 꽤 고전했습니다 고전한 일로 꽤 공부에 되어, 자신의 강점도 되었으므로 내용을 정리해 투고해 보았습니다. 누군가의 참고가 되시면 다행입니다! !
Reference
이 문제에 관하여([Rails] my sql 테이블과 migration 파일을 삭제했을 때 발생한 버그 해결 단계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/homuranotori/items/66dcc508dcc01d9f71d1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)