แสดงการย้ายที่ค้างอยู่ในราง


คำตอบ:


258

rake db:migrate:status(Rails 3 ถึง 5) หรือrails db:migrate:status(Rails 5) จะทำสิ่งนี้ให้สำเร็จ ดูการกระทำนี้

upหมายถึงการโยกย้ายถูกเรียกใช้ downหมายถึงการโยกย้ายยังไม่ได้ทำงาน


ฉันDon't know how to build task 'db:migrate:status'ขึ้นรถไฟ 3.2.8
Peter Ehrlich

1
@PeterEhrlich: มันไม่ปรากฏขึ้นrake -Tแต่คนอื่นทำอย่างไร
jrdioko

2
bundle exec rake db: migrate: status
Nadeem Yasin

2
คุณอ่านเอาต์พุตของคำสั่งนี้ได้อย่างไร? หากสถานะของแถวเป็น "ลง" หมายความว่าเป็นการย้ายที่ค้างอยู่หรือไม่
เดนนิส

12
upหมายถึงการโยกย้ายถูกเรียกใช้ downหมายถึงการโยกย้ายยังไม่ได้ทำงาน
Josh

37

มีrake db:abort_if_pending_migrations(อย่างน้อยใน Rails 2.3.3 ไม่แน่ใจว่าจะเปิดตัวเมื่อใด) คำอธิบายระบุว่า 'ทำให้เกิดข้อผิดพลาดหากมีการย้ายที่ค้างอยู่' สิ่งนี้ดูเหมือนจะถูกใช้เป็นข้อกำหนดเบื้องต้นสำหรับงานอื่น ๆ มากกว่า แต่ฉันเดาว่าคุณสามารถใช้งานได้ตามวัตถุประสงค์ของคุณ

แก้ไข: นี่คือตัวอย่างของผลลัพธ์หลังจากเพิ่งสร้างและไม่เรียกใช้การโยกย้าย 'ทดสอบ'

rails_project theIV$ rake db:abort_if_pending_migrations
(in /Users/theIV/Sites/rails_project/)
You have 1 pending migrations:
  20090828200602 Test
Run "rake db:migrate" to update your database then try again.

ฉันชอบที่จะเพิ่มสิ่งนี้ลงในการอ้างอิงระหว่างการบรรจุราง
Vincent De Smet

ยังมีอยู่ใน Rails 4.1.16
Magne

ทำงานในราง 5.1.3 เช่นกัน
Wilson Silva

16

คำสั่งนี้จะแสดงรายการการย้ายข้อมูลทั้งหมดที่มีสถานะ ( UPหรือDOWN)

ราง 3 และ 4

rake db:migrate:status

ราง 5

rake db:migrate:status

# Or

rails db:migrate:status



2

ลอง rake -h (ช่วยเหลือ) และดู rake -n (= rake --dry-run) ดังนั้นอาจเป็นสิ่งที่ชอบ rake -n db: migrate คุณควรได้รับสิ่งที่คุณต้องการ


2
นั่นไม่ได้ผล มันพิมพ์เฉพาะ: ** เรียกใช้ db: migrate (first_time) ** เรียกใช้สภาพแวดล้อม (first_time) ** เรียกใช้สภาพแวดล้อม (dry run) ** เรียกใช้ (dry run) db: migrate
jrdioko

2

อาจไม่ใช่สิ่งที่ OP ขอมา แต่ถ้าคุณเพียงแค่ต้องตรวจสอบอย่างรวดเร็วว่าการโยกย้ายใด ๆ ที่ค้างอยู่เพื่อใช้ในงานคราดโดยไม่ต้องหันไปใช้

rake db: migrate: status | grep down (อาจไม่ทำงานหากคุณใช้ Windows)

ActiveRecord :: Migration.check_pending! (เพิ่ม ActiveRecord :: PendingMigrationError ที่คุณต้องการช่วยเหลือ)

คุณสามารถใช้ needs_migration ได้ไหม? วิธีการ: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class


2
ActiveRecord::Migrator.needs_migration?ใน Rails 5.1
niborg

1

คำสั่งต่อไปนี้เพื่อตรวจสอบสถานะการโยกย้าย:

rake db:migrate:status

หรือ

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


1

หากคุณต้องการดูว่ามีการโยกย้ายหรือรอดำเนินการเท่าใดคุณสามารถดูได้โดยใช้คำสั่งด้านล่าง

rails db:migrate:status

เพิ่มเติมเกี่ยวกับลิงค์นี้: Rails Active Record Migration


1

หากคุณต้องการ bash one-liner เพื่อพิจารณาว่าจะเรียกใช้การย้ายข้อมูลหรือไม่ (เช่นเฉพาะการโยกย้ายในคำสั่งการปล่อย Herokuเมื่อมีการย้ายที่ค้างอยู่) การทำงานนี้:

(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.