มีคำสั่ง rake เพื่อล้างข้อมูลในตารางฐานข้อมูลหรือไม่?
ฉันจะสร้าง db: seed script เพื่อเติมข้อมูลล่วงหน้าลงในตารางของฉันได้อย่างไร
มีคำสั่ง rake เพื่อล้างข้อมูลในตารางฐานข้อมูลหรือไม่?
ฉันจะสร้าง db: seed script เพื่อเติมข้อมูลล่วงหน้าลงในตารางของฉันได้อย่างไร
คำตอบ:
ฉันใช้rake db:reset
ที่หยดแล้วสร้างฐานข้อมูลและรวมถึงไฟล์ seeds.rb ของคุณ
http://guides.rubyonrails.org/migrations.html#resetting-the-database
คุณสามารถลบทุกอย่างและสร้างฐานข้อมูล + เมล็ดด้วย:
rake db:reset
: โหลดจาก schema.rbrake db:drop db:create db:migrate db:seed
: โหลดจากการย้ายข้อมูลตรวจสอบให้แน่ใจว่าคุณไม่มีการเชื่อมต่อกับ db (เซิร์ฟเวอร์ rails, sql client .. ) หรือ db จะไม่ดรอป
schema.rb เป็นภาพรวมของสถานะปัจจุบันของฐานข้อมูลของคุณที่สร้างโดย:
rake db:schema:dump
หากคุณไม่อยากปล่อยและสร้าง shebang ทั้งหมดขึ้นใหม่เพื่อโหลดข้อมูลของคุณคุณสามารถใช้MyModel.destroy_all
(หรือdelete_all
) ในไฟล์ seed.db เพื่อล้างตารางก่อนที่MyModel.create!(...)
งบของคุณจะโหลดข้อมูล จากนั้นคุณสามารถทำซ้ำการdb:seed
ดำเนินการซ้ำแล้วซ้ำอีก (เห็นได้ชัดว่าสิ่งนี้มีผลเฉพาะกับตารางที่คุณโหลดข้อมูลไม่ใช่ส่วนที่เหลือของตาราง)
มี "แฮ็คสกปรก" ที่https://stackoverflow.com/a/14957893/4553442เพื่อเพิ่มการดำเนินการ "de-seeding" ซึ่งคล้ายกับการย้ายขึ้นและลง ...
ในฐานะของ Rails 5 rake
เครื่องมือ commandline ได้รับการใช้ชื่อแทนrails
ดังนั้นในตอนนี้
rails db:reset
แทน rake db:reset
จะทำงานเช่นกัน
คุณสามารถใช้เมื่อคุณต้องการที่จะลดลงฐานข้อมูลท้องถิ่นและเริ่มต้นใหม่กับข้อมูลที่โหลดจากrake db:reset
db/seeds.rb
นี่เป็นคำสั่งที่มีประโยชน์เมื่อคุณยังคงหาสคีมาของคุณและมักจะต้องเพิ่มฟิลด์ในโมเดลที่มีอยู่
เมื่อใช้คำสั่งรีเซ็ตมันจะทำสิ่งต่อไปนี้: วางฐานข้อมูล: rake db:drop
โหลดสคีมา: rake db:schema:load
Seed data:rake db:seed
rake db:drop
แต่ถ้าคุณต้องการที่จะสมบูรณ์วางฐานข้อมูลของคุณคุณสามารถใช้ การปล่อยฐานข้อมูลจะเป็นการลบสคีมาที่ขัดแย้งกันหรือข้อมูลที่ไม่ดี หากคุณต้องการเก็บข้อมูลที่คุณมีให้แน่ใจว่าได้สำรองข้อมูลก่อนที่จะใช้คำสั่งนี้
นี่คือบทความรายละเอียดเกี่ยวกับมากที่สุดที่สำคัญคำสั่งฐานข้อมูลคราด