รีเซ็ตฐานข้อมูล (ล้างข้อมูลทั้งหมด) จากนั้นทำการ seed ฐานข้อมูล


159

มีคำสั่ง rake เพื่อล้างข้อมูลในตารางฐานข้อมูลหรือไม่?

ฉันจะสร้าง db: seed script เพื่อเติมข้อมูลล่วงหน้าลงในตารางของฉันได้อย่างไร

คำตอบ:


278

ฉันใช้rake db:resetที่หยดแล้วสร้างฐานข้อมูลและรวมถึงไฟล์ seeds.rb ของคุณ http://guides.rubyonrails.org/migrations.html#resetting-the-database


4
หมายเหตุด้านนี้: ในการผลิตคุณอาจต้องรีสตาร์ทเซิร์ฟเวอร์รางเพื่อให้การเปลี่ยนแปลงปรากฏ / หน้าเพื่ออัปเดต
etusm

160

คุณสามารถลบทุกอย่างและสร้างฐานข้อมูล + เมล็ดด้วย:

  1. rake db:reset: โหลดจาก schema.rb
  2. rake db:drop db:create db:migrate db:seed: โหลดจากการย้ายข้อมูล

ตรวจสอบให้แน่ใจว่าคุณไม่มีการเชื่อมต่อกับ db (เซิร์ฟเวอร์ rails, sql client .. ) หรือ db จะไม่ดรอป

schema.rb เป็นภาพรวมของสถานะปัจจุบันของฐานข้อมูลของคุณที่สร้างโดย:

rake db:schema:dump

ขอขอบคุณที่เตือนให้ผู้ใช้ปิดเซิร์ฟเวอร์เพื่อให้แน่ใจว่าฐานข้อมูลถูกทิ้งอย่างเหมาะสม
aardvarkk

6

หากคุณไม่อยากปล่อยและสร้าง shebang ทั้งหมดขึ้นใหม่เพื่อโหลดข้อมูลของคุณคุณสามารถใช้MyModel.destroy_all(หรือdelete_all) ในไฟล์ seed.db เพื่อล้างตารางก่อนที่MyModel.create!(...)งบของคุณจะโหลดข้อมูล จากนั้นคุณสามารถทำซ้ำการdb:seedดำเนินการซ้ำแล้วซ้ำอีก (เห็นได้ชัดว่าสิ่งนี้มีผลเฉพาะกับตารางที่คุณโหลดข้อมูลไม่ใช่ส่วนที่เหลือของตาราง)

มี "แฮ็คสกปรก" ที่https://stackoverflow.com/a/14957893/4553442เพื่อเพิ่มการดำเนินการ "de-seeding" ซึ่งคล้ายกับการย้ายขึ้นและลง ...


ฉลาดสร้างทุกอย่างใหม่หมดทุกครั้งต้องใช้เวลานานสำหรับฉัน
m02ph3u5

5

ในฐานะของ Rails 5 rakeเครื่องมือ commandline ได้รับการใช้ชื่อแทนrailsดังนั้นในตอนนี้

rails db:reset แทน rake db:reset

จะทำงานเช่นกัน


0

คุณสามารถใช้เมื่อคุณต้องการที่จะลดลงฐานข้อมูลท้องถิ่นและเริ่มต้นใหม่กับข้อมูลที่โหลดจากrake db:reset db/seeds.rbนี่เป็นคำสั่งที่มีประโยชน์เมื่อคุณยังคงหาสคีมาของคุณและมักจะต้องเพิ่มฟิลด์ในโมเดลที่มีอยู่

เมื่อใช้คำสั่งรีเซ็ตมันจะทำสิ่งต่อไปนี้: วางฐานข้อมูล: rake db:drop โหลดสคีมา: rake db:schema:load Seed data:rake db:seed

rake db:dropแต่ถ้าคุณต้องการที่จะสมบูรณ์วางฐานข้อมูลของคุณคุณสามารถใช้ การปล่อยฐานข้อมูลจะเป็นการลบสคีมาที่ขัดแย้งกันหรือข้อมูลที่ไม่ดี หากคุณต้องการเก็บข้อมูลที่คุณมีให้แน่ใจว่าได้สำรองข้อมูลก่อนที่จะใช้คำสั่งนี้

นี่คือบทความรายละเอียดเกี่ยวกับมากที่สุดที่สำคัญคำสั่งฐานข้อมูลคราด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.