tabla - Purgue o vuelva a crear una base de datos de Ruby on Rails
agregar un campo a una tabla ruby on rails (18)
Actualización: Con la llegada de Rails 5, este comando será accesible a través de este comando:
rieles db: purge db: create db: migrate RAILS_ENV = prueba
A partir de la nueva versión de Rails 4.2 ahora puede ejecutar:
rake db:purge
Fuente: commit
# desc "Empty the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV it defaults to purging the development and test databases."
task :purge => [:load_config] do
ActiveRecord::Tasks::DatabaseTasks.purge_current
end
Se pueden usar juntos como se mencionó anteriormente:
rake db:purge db:create db:migrate RAILS_ENV=test
Tengo una base de datos de desarrollo de Ruby on Rails llena de datos. Quiero borrar todo y reconstruir la base de datos. Estoy pensando en usar algo como:
rake db:recreate
es posible?
Conozco dos formas de hacer esto:
Esto restablecerá su base de datos y volverá a cargar su esquema actual con todos:
rake db:reset db:migrate
Esto destruirá su base de datos y luego la creará y luego migrará su esquema actual:
rake db:drop db:create db:migrate
Todos los datos se perderán en ambos escenarios.
Creo que la mejor manera de ejecutar este comando:
**rake db:reset** it does db:drop, db:setup
rake db:setup does db:create, db:schema:load, db:seed
De acuerdo con la guía de Rails , este liner debe usarse porque se cargaría desde schema.rb
lugar de volver a cargar los archivos de migración uno por uno:
rake db:reset
Debido a que en el desarrollo, siempre querrá volver a crear la base de datos, puede definir una tarea de rake en su carpeta lib / tasks así.
namespace :db do
task :all => [:environment, :drop, :create, :migrate] do
end
end
y en la terminal correrás
rake db:all
reconstruirá su base de datos
Dependiendo de lo que quieras, puedes usar ...
rake db:create
... para construir la base de datos desde cero desde config/database.yml
, o ...
rake db:schema:load
... para construir la base de datos desde cero desde su archivo schema.rb
.
Desde la línea de comandos ejecutar
rake db:migrate:reset
En Rails 4, todo lo que se necesita es
$ rake db:schema:load
Eso eliminaría todo el contenido de su base de datos y recrearía el esquema de su archivo schema.rb, sin tener que aplicar todas las migraciones una por una.
Hoy he hecho algunos cambios en mi esquema de rieles. Me di cuenta de que necesitaba dos modelos adicionales en una jerarquía y algunos otros para eliminarlos. Hubo muchos pequeños cambios requeridos a los modelos y controladores.
Agregué los dos nuevos modelos y los creé usando:
rake db:migrate
Luego edité el archivo schema.rb. Quité manualmente los modelos antiguos que ya no eran necesarios, cambié el campo de clave foránea según fue necesario y simplemente lo reordené un poco para aclararlo. Eliminé todas las migraciones y luego volví a ejecutar la compilación a través de:
rake db:reset
Funcionó perfectamente. Todos los datos tienen que ser recargados, por supuesto. Rails se dio cuenta de que las migraciones habían sido eliminadas y restableció la marca de agua alta:
-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])
Para eliminar una base de datos en particular, puede hacer esto en la consola de Rails:
$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit
Y luego volver a migrar DB
$bundle exec rake db:migrate
Puede usar db:reset
- para ejecutar db: drop y db: setup o db:migrate:reset
- que ejecuta db: drop, db: create y db: migrate.
Depende de lo que quieras usar existe schema.rb
Puedes hacer manualmente:
rake db:drop
rake db:create
rake db:migrate
O simplemente rake db:reset
, que ejecutará los pasos anteriores pero también ejecutará su archivo db/seeds.rb
.
Un matiz adicional es que rake db:reset
carga directamente desde su archivo schema.rb
en lugar de ejecutar todos los archivos de migración nuevamente.
Sus datos se desvanecen en todos los casos.
Puedes usar esta siguiente línea de comando:
rake db:drop db:create db:migrate db:seed db:test:clone
Simplemente emita la secuencia de los pasos: elimine la base de datos, vuelva a crearla nuevamente, migre los datos y, si tiene semillas, siembre la base de datos:
rake db:drop db:create db:migrate db:seed
Dado que el entorno predeterminado para rake
es el desarrollo , en caso de que vea la excepción en las pruebas de especificaciones, debe volver a crear la base de datos para el entorno de prueba de la siguiente manera:
RAILS_ENV=test rake db:drop db:create db:migrate
En la mayoría de los casos, la base de datos de prueba se está sembrando durante los procedimientos de prueba, por lo que no es necesario pasar la tarea de tarea db:seed
. De lo contrario, deberás preparar la base de datos:
rake db:test:prepare
o
RAILS_ENV=test rake db:seed
Además, para usar la tarea de recreación , puede agregar al siguiente código de Rakefile :
namespace :db do
task :recreate => [ :drop, :create, :migrate ] do
if ENV[ ''RAILS_ENV'' ] !~ /test|cucumber/
Rake::Task[ ''db:seed'' ].invoke
end
end
end
Entonces emita:
rake db:recreate
Simplemente puedes correr
rake db:setup
Se eliminará la base de datos, se creará una nueva base de datos y se completará la base de datos de semilla si creó un archivo semilla con algunos datos.
Sobre rieles 4.2, para eliminar todos los datos pero preservar la base de datos.
$ bin/rake db:purge && bin/rake db:schema:load
https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md
Uso el siguiente forro en la Terminal.
$ rake db:drop && rake db:create && rake db:migrate && rake db:schema:dump && rake db:test:prepare
Puse esto como un alias de shell y lo llamé volver a remigrate
Por ahora, puede "encadenar" fácilmente tareas de Rails:
$ rake db:drop db:create db:migrate db:schema:dump db:test:prepare # db:test:prepare no longer available since Rails 4.1.0.rc1+
Utilizar como
rake db:drop db:create db:migrate db:seed
Todo en una línea. Esto es más rápido ya que el entorno no se vuelve a cargar una y otra vez.
db: drop - caerá la base de datos.
db: create : creará la base de datos (host / db / password se tomará de config / database.yml)
db: migrate: ejecutará las migraciones existentes desde el directorio (db / migration / .rb) *.
db: seed : ejecutará los datos de semilla posibles desde el directorio (db / migration / seed.rb) ..
Por lo general prefiero
rake db:reset
hacer todo de una vez.
¡Aclamaciones!