Tôi đã kết thúc với 9 lần di chuyển có hiệu quả trùng lặp. (Tôi nghĩ rằng điều này là do tôi đã cài đặt/cập nhật Gems và/hoặc kéo di chuyển trên cả máy ảo và máy sản xuất của tôi, nhưng không hoàn toàn chắc chắn ở giai đoạn này.)Đánh dấu Rails di chuyển khi di chuyển
Tôi đã chuyển một bộ 9 từ ray thư mục trên máy chủ sản xuất, nhưng bây giờ mà tôi muốn db:migrate
vào sản xuất để chạy di cư khác, tôi nhận được:
$ bundle exec rake db:migrate RAILS_ENV=production
[DEPRECATION WARNING] Nested I18n namespace lookup under "activerecord.attributes.checkout" is no longer supported
== CreatePages: migrating ====================================================
-- create_table(:pages)
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'pages' already exists: CREATE TABLE `pages` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `title` varchar(255), `body` text, `slug` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB
Điều này là do sự di cư đã có hiệu quả đã được chạy.
Tôi thà tránh làm db:migrate:down
và db:migrate:up
cho mỗi cái - tôi nghĩ điều này có nghĩa là dữ liệu trong cơ sở dữ liệu sản xuất bị mất. (Một vài trang tĩnh trong Spree trong trường hợp này.)
Có cách nào tôi có thể nói cài đặt Rails này để quên tất cả các di chuyển xuất sắc, đánh dấu hiệu quả tất cả các di chuyển xuất sắc như đã hoàn thành?
Cảm ơn - điều này nghe có vẻ như nó nên làm các trick. Tôi sẽ thử. Tôi nghĩ rằng tôi đang ở trong tình huống này bởi vì 9 lần di chuyển liên quan đã được tạo ra một lần trên cả máy ảo và máy ảo của tôi (do đó di chuyển tương tự có hai lần di chuyển với dấu thời gian riêng của nó). 9 chiếc đầu tiên được chạy, nhưng sau đó tôi đã kéo thêm 9 chiếc nữa từ máy tính của mình, do đó khiếu nại về bảng đã tồn tại. Tôi vẫn đang nắm bắt được cài đặt và cập nhật Gems liên quan đến việc triển khai. –
Um, tại sao bạn có các lần di chuyển trùng lặp giống nhau nhưng với các dấu thời gian khác nhau? Ý tưởng đằng sau việc di chuyển là bạn có một bộ di chuyển (tức là thay đổi cấu trúc cơ sở dữ liệu) mà mọi người sử dụng. Cơ sở dữ liệu sau đó có một bảng để theo dõi các di chuyển đã chạy, do đó chúng sẽ không chạy hai lần trên mỗi môi trường (dev/production). –
Thật vậy. Tôi nghĩ rằng điều này có thể là do trước đây tôi đã cài đặt Gems (bao gồm cả di chuyển liên quan của họ) trên cả hai máy mà không nhận ra ý nghĩa. Tôi cần sắp xếp công việc. –