Grabie tylko jedna migracja
Próbuję uruchomić tylko jedną migrację z całej masy w mojej aplikacji rails. Jak mogę to zrobić? Nie chcę uruchamiać żadnej migracji przed lub po niej. Dzięki.
11 answers
rake db:migrate:redo VERSION=xxxxxxx
, ale to uruchomi down
, a następnie up
Krok. Możesz to zrobić w połączeniu z komentowaniem kroku w dół tymczasowo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 03:04:36
rake db:migrate:up VERSION=1234567890
Podobnie rake db:migrate:down
aby ograniczyć migrację specyficzną. Listę dostępnych zadań rake można uzyskać za pomocą rake -T
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 09:03:51
Musiałem uruchomić pojedynczą migrację, która się zmieniła i musiała zostać ponownie uruchomiona niezależnie od wszystkich innych migracji. Odpal konsolę i zrób to:
>> require 'db/migrate/your_migrations.rb'
=> ["YourMigrations"]
>> YourMigrations.up
=> etc... as the migration runs
>> YourMigration.down
Bardziej użyteczne To może być wprowadzone do zadania grabie itp.
rake db:migrate:up VERSION=version_no
Spowoduje migrację (dodanie) skryptu migracji specyficznej
rake db:migrate:down VERSION=version_no
Usunie skrypt migracji specyficznej
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-11 00:27:15
rake db:migrate VERSION=20098252345
Spróbuj.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-25 22:30:47
Rozszerzając odpowiedź korcha powyżej, require
nie zadziałało dla mnie, ale load
zadziałało. Aby być konkretnym, dla pliku migracji:
class ChangeMinQuantityToRaces < ActiveRecord::Migration
def change
change_column :races, :min_quantity, :integer, :default => 0
end
end
W konsoli wpisując
> load 'db/migrate/30130925110821_change_min_quantity_to_races.rb'
> ChangeMinQuantityToRaces.new.change
Zadziałało dla mnie.
> Race.new.min_quantity # => 0
To było dla ruby 1.9. 3p484 (2013-11-22 revision 43786) [x86_64-linux] i Rails 3.2.13.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-20 13:31:06
rake db:migrate:redo version='xxxx'
Pamiętaj, aby umieścić cudzysłów wokół xxxx, xxxx jest znacznikiem czasu (lub ID migracji) dla Twojej migracji.
Możesz sprawdzić znaczniki czasu (ID migracji) dla poprzednich migracji za pomocą
rake db:migrate:status
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-24 03:08:51
Dodaję do tego Moje 2 grosze, bo natknąłem się na ten sam problem:
Jeśli chcesz przeprowadzić migrację od nowa bez tworzenia nowej, możesz wykonać następujące czynności:
rails dbconsole -p
devdb=# delete from public.schema_migrations where version = '20150105181157';
I rails "zapomni", że przeprowadził migrację dla 20150105181157. Teraz po uruchomieniu db:migrate uruchomi go ponownie.
To jednak prawie zawsze jest zły pomysł. Jedynym przypadkiem, w którym może to mieć sens, jest to, że masz gałąź rozwoju i nie udoskonaliłeś swojej migracja jeszcze i chcesz dodać kilka rzeczy do niego w rozwoju. Ale nawet wtedy lepiej jest, aby Twoja migracja była dwukierunkowa, abyś mógł odpowiednio cofnąć i ponawiać wielokrotnie.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-08 18:30:25
Musi być jakiś sposób na uruchomienie klasy migracji przez konsolę. Nie mogę uzyskać kodu migracji, aby był rozpoznawalny.
Jednak, jak wskazują komentarze, preferowane jest uruchamianie migracji w kolejności. Użycie:
rake db:migrate VERSION=##########
Skopiować i wkleić kod w migracji do skryptu / konsoli?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 02:54:57
Mam metodę użytkową, która sprawia, że jest to bardzo łatwe w rozwoju. Uważam, że pomaga mi to uniknąć tworzenia zbyt wielu migracji-Zwykle modyfikuję migracje, dopóki nie zostaną wdrożone.
Http://fullware.net/index.php/2011/05/26/easily-load-rails-migrations-for-console-execution/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-15 03:52:15
Używam tej techniki w rozwoju, gdy zmieniam migrację znaczną ilość i nie chcę migrować w dół ani tracić żadnych danych w tych po drodze(zwłaszcza, gdy importuję starsze dane, które zajmują dużo czasu, że nie chcę ponownie importować).
To jest 100% hackish i zdecydowanie nie polecam robienia tego w produkcji, ale da radę:
- Przenieś migrację, którą chcesz ponownie uruchomić z katalogu do tymczasowego miejsce
- Wygeneruj kolejną migrację o tej samej nazwie
- skopiuj / wklej oryginalny kod migracji do nowo wygenerowanego pliku migracji
- uruchom nową migrację
- Usuń nowo wygenerowany plik migracji
- Edytuj migracje schematu, aby usunąć najnowszą wartość
- Przywróć stary plik migracji
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-06 20:39:55