วิธีย้อนกลับเพียงขั้นตอนเดียวโดยใช้ rake db: migrate


197

หลังจากเพิ่มไฟล์การย้ายข้อมูลในdb/migrateโฟลเดอร์และการทำงานrake db:migrateฉันต้องการกลับไปที่ขั้นตอนก่อนหน้าฉันคิดว่าการใช้VERSION=nเป็นวิธีที่ถูกต้อง แต่ฉันไม่รู้ค่าที่ถูกต้องของการใช้ มีคำสั่งให้ตรวจสอบค่า n ปัจจุบันหรือไม่?

rake db:migrateมันจะดีถ้าใครสามารถให้คำแนะนำแบบเต็มเกี่ยวกับวิธีการใช้

คำตอบ:


358

สำหรับการเริ่ม

rake db:rollback คุณจะได้รับการสนับสนุนหนึ่งขั้นตอน

แล้วก็

rake db:rollback STEP=n

จะย้อนคุณกลับการnโยกย้ายที่ไหนซึ่งnเป็นจำนวนการโยกย้ายล่าสุดที่คุณต้องการย้อนกลับ

อ้างอิงเพิ่มเติมที่นี่


95

ย้อนกลับการโยกย้ายล่าสุด:

rake db:rollback

ย้อนกลับการnโยกย้ายล่าสุด:

rake db:rollback STEP=n

คุณสามารถค้นหาคำแนะนำแบบเต็มในการใช้งานสำหรับการโยกย้าย Rails คราดในที่คู่มือทางรถไฟสำหรับการทำงานการโยกย้าย


นี่คือบางส่วนเพิ่มเติม:

  • rake db:migrate - เรียกใช้การย้ายข้อมูลทั้งหมดที่ยังไม่ได้ดำเนินการ
  • rake db:migrate VERSION=20080906120000 - เรียกใช้การย้ายข้อมูลที่จำเป็นทั้งหมด (ขึ้นหรือลง) เพื่อไปยังรุ่นที่กำหนด
  • rake db:migrate RAILS_ENV=test - เรียกใช้การย้ายข้อมูลในสภาพแวดล้อมที่กำหนด
  • rake db:migrate:redo - ย้อนกลับหนึ่งการย้ายข้อมูลและเรียกใช้อีกครั้ง
  • rake db:migrate:redo STEP=n- ย้อนกลับการnย้ายข้อมูลครั้งล่าสุดและเรียกใช้อีกครั้ง
  • rake db:migrate:up VERSION=20080906120000- เรียกใช้upวิธีการโอนย้ายที่กำหนด
  • rake db:migrate:down VERSION=20080906120000- เรียกใช้downวิธีการโอนย้ายที่กำหนด

และเพื่อตอบคำถามของคุณเกี่ยวกับตำแหน่งที่คุณได้รับหมายเลขเวอร์ชันการโยกย้ายจาก:

เวอร์ชันนี้เป็นคำนำหน้าตัวเลขในชื่อไฟล์ของการย้ายข้อมูล ตัวอย่างเช่นหากต้องการย้ายไปยังเวอร์ชัน 20080906120000 จะทำงาน

$ rake db:migrate VERSION=20080906120000

(จากการเรียกใช้การย้ายข้อมูลในคู่มือราง)


2
เมื่อ rake db: rollback ไม่ทำงานเพื่อย้อนกลับการโยกย้ายครั้งล่าสุดฉันต้องใช้ rake db: migrate VERSION = <วินาทีรุ่นล่าสุดวันที่>> และทำงานได้ดี
Omni

8

วิธีที่ดีที่สุดคือใช้การโยกย้ายโดยเฉพาะอีกครั้งโดยใช้ down หรือ up (ใน rails 4 มันเปลี่ยนแปลง)

rails db: migrate: up VERSION = timestamp

ตอนนี้คุณจะได้รับการประทับเวลาอย่างไร ไปที่เส้นทางนี้

/ DB / โยกย้าย

ระบุไฟล์การโยกย้ายที่คุณต้องการแปลงกลับมาประทับเวลาจากชื่อไฟล์นั้น


แม้ว่าสิ่งนี้จะไม่ตอบคำถาม แต่ก็เป็นวิธีที่ดีที่สุด การย้อนกลับไปตามขั้นตอนอาจทำให้เกิดข้อผิดพลาดโดยเฉพาะอย่างยิ่งเมื่อทำงานกับซอฟต์แวร์ในกลุ่ม
เหล็ก


1

คนอื่นได้ตอบคุณแล้วว่าจะย้อนกลับอย่างไร แต่คุณก็ถามว่าคุณจะระบุหมายเลขรุ่นของการย้ายข้อมูลได้อย่างไร

  • rake db:migrate:status แสดงรายการเวอร์ชันการโยกย้ายชื่อและสถานะ (ขึ้นหรือลง)
  • คุณยังสามารถค้นหาไฟล์การโยกย้ายซึ่งมีการประทับเวลาในชื่อไฟล์นั่นคือหมายเลขเวอร์ชัน การย้ายข้อมูลอยู่ในโฟลเดอร์:/db/migrate

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