[RUBY-ON-RAILS] DB 마이그레이션 난간 - 어떻게 테이블을 삭제하려면?
RUBY-ON-RAILSDB 마이그레이션 난간 - 어떻게 테이블을 삭제하려면?
나는 내가 그것을 사용에 대한 계획을 필요로가는,하지만 지금은 더 이상 있다고 생각하는 테이블을 추가했습니다. 어떻게 그 테이블을 제거해야합니까?
테이블 내 데이터베이스에 그래서 나는 이미 마이그레이션을 실행했습니다. 나는 그림 레일 마이그레이션이 처리 할 수 있어야 생성,하지만 난 방법을 아직 파악하지 않았습니다.
난 노력 했어:
rails generate migration drop_tablename
하지만 그건 그냥 빈 마이그레이션을 생성.
레일에서 테이블을 삭제하기 위해 "공식적인"방법은 무엇입니까?
해결법
-
==============================
1.당신은 항상 단순히 이미 당신이 원하는 코드를 가지고 마이그레이션을 생성 할 수 없습니다. 당신은 빈 마이그레이션을 만든 다음 당신이 필요로하는 코드로 채울 수 있습니다.
당신은 항상 단순히 이미 당신이 원하는 코드를 가지고 마이그레이션을 생성 할 수 없습니다. 당신은 빈 마이그레이션을 만든 다음 당신이 필요로하는 코드로 채울 수 있습니다.
당신은 여기에 이전에 다른 작업을 수행하는 방법에 대한 정보를 찾을 수 있습니다 :
http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
보다 구체적으로, 다음과 같은 방법을 사용하여 테이블을 삭제하는 방법을 볼 수 있습니다 :
drop_table :table_name
-
==============================
2.먼저 당신이 원하는 어떤 이름을 가진 빈 마이그레이션을 생성합니다. 그것은 적절한 날짜를 생성하기 때문에 그것은이 방법을 수행하는 것이 중요합니다.
먼저 당신이 원하는 어떤 이름을 가진 빈 마이그레이션을 생성합니다. 그것은 적절한 날짜를 생성하기 때문에 그것은이 방법을 수행하는 것이 중요합니다.
rails generate migration DropProductsTable
이 / DB / 마이그레이션 / 같은 20111015185025_drop_products_table.rb에서 .rb 파일을 생성합니다
이제 편집 파일은 다음과 같이하는 것이 :
class DropProductsTable < ActiveRecord::Migration def up drop_table :products end def down raise ActiveRecord::IrreversibleMigration end end
추가 된 유일한 것은 내가 DROP_TABLE했다 : 제품과 인상 액티브 :: IrreversibleMigration.
마이그레이션 그것은 당신을 위해 테이블을 삭제합니다 : 다음 레이크 DB를 실행합니다.
-
==============================
3.수동으로 마이그레이션을 작성합니다. 예를 들면 실행은 g 마이그레이션 DropUsers 레일.
수동으로 마이그레이션을 작성합니다. 예를 들면 실행은 g 마이그레이션 DropUsers 레일.
난 그냥 맥스웰 홀더의 게시물을 인용거야 마이그레이션의 코드로 마이그레이션 체크리스트 레일
class DropUsers < ActiveRecord::Migration def change drop_table :users end end
class DropUsers < ActiveRecord::Migration def up drop_table :users end def down fail ActiveRecord::IrreversibleMigration end end
class DropUsers < ActiveRecord::Migration def change drop_table :users do |t| t.string :email, null: false t.timestamps null: false end end end
-
==============================
4.여기에 제공된 답변이 제대로 작동 동안, 나는, 내가 여기에 그것을 발견 조금 더 '간단'뭔가를 원 : 링크를 먼저 레일 콘솔을 입력 :
여기에 제공된 답변이 제대로 작동 동안, 나는, 내가 여기에 그것을 발견 조금 더 '간단'뭔가를 원 : 링크를 먼저 레일 콘솔을 입력 :
$rails console
그럼 그냥 입력 :
ActiveRecord::Migration.drop_table(:table_name)
그리고, 다 나를 위해 일한!
-
==============================
5.당신은 다음 명령을 사용하여 새 마이그레이션 파일을 만들 필요가
당신은 다음 명령을 사용하여 새 마이그레이션 파일을 만들 필요가
rails generate migration drop_table_xyz
및 (dB / 이동 / xxxxxxx_drop_table_xyz)와 같은 새로 생성 된 마이그레이션 파일에 DROP_TABLE 코드를 작성
drop_table :tablename
마이그레이션없이 테이블을 삭제하고 싶다면 또는 단순히 개방 레일에 의해 콘솔
$ rails c
그리고 다음 명령을 실행
ActiveRecord::Base.connection.execute("drop table table_name")
또는 좀 더 단순화 명령을 사용할 수 있습니다
ActiveRecord::Migration.drop_table(:table_name)
-
==============================
6.
class DropUsers < ActiveRecord::Migration def change drop_table :users do |t| t.string :name t.timestamps end end end
-
==============================
7.나는, 새로운 마이그레이션을 작성해야하고, self.up.에 DROP_TABLE 둘 것입니다 완전히 "공식적인"이라고 생각 self.down 방법은 전체 테이블을 다시 모든 코드를 포함해야합니다. 아마도 그 코드는 단지 마이그레이션을 만들 때 schema.rb에서 수행 할 수있다.
나는, 새로운 마이그레이션을 작성해야하고, self.up.에 DROP_TABLE 둘 것입니다 완전히 "공식적인"이라고 생각 self.down 방법은 전체 테이블을 다시 모든 코드를 포함해야합니다. 아마도 그 코드는 단지 마이그레이션을 만들 때 schema.rb에서 수행 할 수있다.
그것은 당신이 더 이상 필요로하지 않을 알고있는 테이블을 생성하는 코드를 넣어, 이상한 조금 보인다, 그러나 그것은 완전하고 "공식적인"모든 마이그레이션 코드를 유지하는 것, 맞죠?
난 그냥 내가 왜 것 "다운"을하지 않도록주의를 테스트하지 않았다 솔직히 드롭하는 데 필요한 테이블이를했지만.
-
==============================
8.당신은 단순히 레일 콘솔에서 테이블을 삭제할 수 있습니다. 먼저 콘솔을 엽니 다
당신은 단순히 레일 콘솔에서 테이블을 삭제할 수 있습니다. 먼저 콘솔을 엽니 다
$ rails c
다음 콘솔에서이 명령을 붙여
ActiveRecord::Migration.drop_table(:table_name)
삭제하려는 테이블과 테이블 _ 이름을 바꿉니다.
당신은 또한 터미널에서 직접 테이블을 드롭 할 수 있습니다. 당신의 응용 프로그램의 루트 디렉토리에 입력하고이 명령을 실행
$ rails runner "Util::Table.clobber 'table_name'"
-
==============================
9.당신은 마이그레이션에게이 가이드에있는 방법을 롤백 할 수 있습니다 :
당신은 마이그레이션에게이 가이드에있는 방법을 롤백 할 수 있습니다 :
http://guides.rubyonrails.org/active_record_migrations.html#reverting-previous-migrations
마이그레이션을 생성합니다 :
rails generate migration revert_create_tablename
마이그레이션을 쓰기 :
require_relative '20121212123456_create_tablename' class RevertCreateTablename < ActiveRecord::Migration[5.0] def change revert CreateTablename end end
당신은 또한 롤백 할 수 및 마이그레이션을 되 돌리는 데 사용할 수있는이 방법
-
==============================
10.간단하고 공식적인 방법이 될 것입니다 :
간단하고 공식적인 방법이 될 것입니다 :
rails g migration drop_tablename
이제이에 파일 이름과 편집을 같이 drop_tablename가 포함 된 DB / 마이그레이션 및 파일에 대한보기로 이동합니다.
def change drop_table :table_name end
그럼 당신은 실행해야
rake db:migrate
콘솔에.
-
==============================
11.당신이 콘솔을 레일 열기
당신이 콘솔을 레일 열기
ActiveRecord::Base.connection.execute("drop table table_name")
-
==============================
12.나는 앞서이 솔루션에 갔다 있도록 마이그레이션 스크립트를 사용하여 작업 할 수 없습니다. 레일 터미널을 사용하여 콘솔 입력 :
나는 앞서이 솔루션에 갔다 있도록 마이그레이션 스크립트를 사용하여 작업 할 수 없습니다. 레일 터미널을 사용하여 콘솔 입력 :
rails c
유형
ActiveRecord::Migration.drop_table(:tablename)
그것은 나를 위해 잘 작동합니다. 이것은 위의 표를 제거합니다. 실행하는 것을 잊지 마세요
rails db:migrate
-
==============================
13.아직 재실행 등, 마이그레이션 롤백을 가능하게하고있는 동안 - 예외를 발생하거나 지금 빈 테이블을 다시 시도에 대안 -
아직 재실행 등, 마이그레이션 롤백을 가능하게하고있는 동안 - 예외를 발생하거나 지금 빈 테이블을 다시 시도에 대안 -
def change drop_table(:users, force: true) if ActiveRecord::Base.connection.tables.include?('users') end
-
==============================
14.액티브 :: Base.connection.drop_table : 테이블 _
액티브 :: Base.connection.drop_table : 테이블 _
-
==============================
15.나는 테이블 자체와 함께 우리의 이주 스크립트를 삭제하는 데 필요한 ...
나는 테이블 자체와 함께 우리의 이주 스크립트를 삭제하는 데 필요한 ...
class Util::Table < ActiveRecord::Migration def self.clobber(table_name) # drop the table if ActiveRecord::Base.connection.table_exists? table_name puts "\n== " + table_name.upcase.cyan + " ! " << Time.now.strftime("%H:%M:%S").yellow drop_table table_name end # locate any existing migrations for a table and delete them base_folder = File.join(Rails.root.to_s, 'db', 'migrate') Dir[File.join(base_folder, '**', '*.rb')].each do |file| if file =~ /create_#{table_name}.rb/ puts "== deleting migration: " + file.cyan + " ! " << Time.now.strftime("%H:%M:%S").yellow FileUtils.rm_rf(file) break end end end def self.clobber_all # delete every table in the db, along with every corresponding migration ActiveRecord::Base.connection.tables.each {|t| clobber t} end end
터미널 창에서 다음을 실행합니다 :
$ rails runner "Util::Table.clobber 'your_table_name'"
또는
$ rails runner "Util::Table.clobber_all"
-
==============================
16.당신이 할 수있는 최선의 방법입니다
당신이 할 수있는 최선의 방법입니다
rails g migration Drop_table_Users
다음을 수행
rake db:migrate
-
==============================
17.운영
운영
rake db:migrate:down VERSION=<version>
여기서 <버전>은 되돌리려 마이그레이션 파일의 버전 번호입니다.
예:-
rake db:migrate:down VERSION=3846656238
-
==============================
18.만약 누군가가 SQL에서 작업을 수행하는 방법을 찾고있다.
만약 누군가가 SQL에서 작업을 수행하는 방법을 찾고있다.
레일 형 단말로부터 dbconsole
암호를 입력
콘솔에서 할
사용의 DB_NAME;
DROP의 표 TABLE_NAME;
출구
스키마 마이그레이션 파일 및 테이블 구조를 제거하는 것을 잊지 말아 줘
-
==============================
19.특정 테이블을 삭제하려는 경우 당신은 할 수있다
특정 테이블을 삭제하려는 경우 당신은 할 수있다
$ rails db:migrate:up VERSION=[Here you can insert timestamp of table]
귀하의 모든 데이터베이스를 삭제하려면, 그렇지 않은 경우는 할 수
$rails db:drop
-
==============================
20.테이블 삭제 / 마이그레이션
테이블 삭제 / 마이그레이션
운영:- $ 레일 마이그레이션 DropTablename을 생성
특급 - $ 레일 마이그레이션 DropProducts을 생성
-
==============================
21.이 명령을 실행 -
이 명령을 실행 -
rails g migration drop_table_name
그때:
rake db:migrate
또는 다음 MySQL 데이터베이스를 사용하는 경우 :
-
==============================
22.스키마에서 테이블을 삭제하려면 동작 아래 수행 -
스키마에서 테이블을 삭제하려면 동작 아래 수행 -
rails db:rollback
from https://stackoverflow.com/questions/4020131/rails-db-migration-how-to-drop-a-table by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 루비 레일에 이전 페이지로 리디렉션? (0) | 2020.02.07 |
---|---|
[RUBY-ON-RAILS] 레일 생산 로그 회전에 루비 (0) | 2020.02.07 |
[RUBY-ON-RAILS] CSRF 보호 + Angular.js는 레일 : protect_from_forgery가 POST에 로그 아웃 나를 수 있습니다 (0) | 2020.02.07 |
[RUBY-ON-RAILS] 탄환 및 RSpec에 보석을 이용하여 N + 1 개 쿼리를 줄이기 (0) | 2020.02.07 |
[RUBY-ON-RAILS] 일반 루비 sqlite3를 "LIKE"또는 PostgreSQL을 "ILIKE"에 대한 해결책? (0) | 2020.02.07 |