[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파일에 실수로 남은 기술 내용과 삭제하기 위해서 작성한 파일명이나 컬럼명의 기술 내용을 동일하게 하지 않으면 잘 데이터가 지울 수 없었기 때문에 꽤 고전했습니다 고전한 일로 꽤 공부에 되어, 자신의 강점도 되었으므로 내용을 정리해 투고해 보았습니다. 누군가의 참고가 되시면 다행입니다! !

좋은 웹페이지 즐겨찾기