Agregué una tabla que pensé que iba a necesitar, pero ahora ya no planeo usarla. ¿Cómo debo eliminar esa tabla?
Ya he realizado migraciones, por lo que la tabla está en mi base de datos. Supongo que rails generate migration
debería ser capaz de manejar esto, pero aún no he descubierto cómo.
He intentado:
rails generate migration drop_tablename
pero eso solo generó una migración vacía.
¿Cuál es la forma "oficial" de colocar una tabla en Rails?
ruby-on-rails
database
ruby-on-rails-3
migration
rake
Jason Whitehorn
fuente
fuente
rails generate migration
tiene opciones de línea de comandos para generar código de migración para crear tablas, agregar o cambiar columnas, etc., sería bueno si también tuviera una opción para soltar una tabla, pero no la tiene. Claro, escribir laup
parte es simple, solo llamedrop_table
, pero ladown
parte, que genera la tabla nuevamente, puede no ser siempre tan simple, especialmente si las migraciones han cambiado el esquema de la tabla en cuestión después de su creación inicial. Tal vez alguien debería sugerir a los desarrolladores de Rails que agregar esa opción sería una buena idea.rake
comando de creación de migración, con el nombre de una tabla como parámetro, que produciría las funcionesup
ydown
funciones necesarias .Respuestas:
No siempre podrá generar simplemente la migración para tener el código que desea. Puede crear una migración vacía y luego completarla con el código que necesita.
Puede encontrar información sobre cómo realizar diferentes tareas en una migración aquí:
http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
Más específicamente, puede ver cómo colocar una tabla utilizando el siguiente enfoque:
fuente
Primero genere una migración vacía con cualquier nombre que desee. Es importante hacerlo de esta manera, ya que crea la fecha adecuada.
Esto generará un archivo .rb en / db / migrate / like 20111015185025_drop_products_table.rb
Ahora edite ese archivo para que se vea así:
Lo único que agregué fue
drop_table :products
yraise ActiveRecord::IrreversibleMigration
.Luego corre
rake db:migrate
y te dejará caer la mesa.fuente
down
método, no la recuperará, por lo que en realidad no es una reversión adecuada. Es mejor indicar claramente que la migración es irreversible que dar una falsa sensación de que se puede recuperar.Escribe tu migración manualmente. Ej
rails g migration DropUsers
. Correr .En cuanto al código de la migración sólo voy a citar el post de Maxwell titular Carriles Migración Lista de verificación
MALO - corriendo
rake db:migrate
y luegorake db:rollback
fallaráBIEN: revela la intención de que la migración no sea reversible
MEJOR - es realmente reversible
fuente
schema.rb
, no olvide buscar tambiénschema.rb
claves foráneas. Luego agregue la definición de clave externa aldrop_table
bloque, por ejemplo:t.foreign_key "other_table"
Si bien las respuestas proporcionadas aquí funcionan correctamente, quería algo un poco más 'directo', lo encontré aquí: enlace Primero ingrese a la consola de rails:
Luego simplemente escriba:
Y listo, funcionó para mí!
fuente
rails destroy model User
Debe crear un nuevo archivo de migración con el siguiente comando
y escriba el código drop_table en el archivo de migración recién generado (db / migration / xxxxxxx_drop_table_xyz) como
O, si desea abandonar la tabla sin migración, simplemente abra la consola de rails
y ejecuta el siguiente comando
o puedes usar un comando más simplificado
fuente
fuente
Creo que, para ser completamente "oficial", necesitaría crear una nueva migración y colocar drop_table en self.up. El método self.down debería contener todo el código para recrear la tabla en su totalidad. Presumiblemente, ese código podría tomarse de schema.rb al momento de crear la migración.
Parece un poco extraño poner un código para crear una tabla que sabes que ya no necesitarás, pero eso mantendría todo el código de migración completo y "oficial", ¿verdad?
Simplemente hice esto para una mesa que necesitaba dejar, pero honestamente no probé el "down" y no estaba seguro de por qué lo haría.
fuente
raise ActiveRecord::IrreversibleMigration
en el método self.down, por lo que, al MENOS, se dará un error / aviso si alguna vez intenta retroceder.CreateMyTable.up
yActiveRecord::Migrator.run(:up, ActiveRecord::Migrator.migrations_paths, X)
donde X es la migración que originalmente creó la tabla, pero ninguna de las dos funciona: en ambos enfoques, AR primero comprueba si la migración ya se ha aplicado y la omite en silencio si es así. `simplemente puede soltar una mesa desde la consola de rieles. primero abre la consola
luego pegue este comando en la consola
reemplace table_name con la tabla que desea eliminar.
También puede colocar la tabla directamente desde la terminal. simplemente ingrese en el directorio raíz de su aplicación y ejecute este comando
fuente
La forma simple y oficial sería esta:
Ahora vaya a su db / migrate y busque su archivo que contiene drop_tablename como nombre de archivo y edítelo en este.
Entonces necesitas correr
en tu consola
fuente
Puede revertir una migración tal como está en la guía:
http://guides.rubyonrails.org/active_record_migrations.html#reverting-previous-migrations
Generar una migración:
Escribe la migración:
De esta manera, también puede revertir y usar para revertir cualquier migración
fuente
Alternativa a generar una excepción o intentar recrear una tabla ahora vacía, al tiempo que permite la reversión de la migración, rehacer, etc.
fuente
No pude hacerlo funcionar con el script de migración, así que seguí adelante con esta solución. Ingrese a la consola de rails usando el terminal:
Tipo
Funciona bien para mi Esto eliminará la tabla anterior. No olvides correr
fuente
Abre tu consola de rieles
fuente
ActiveRecord::Base.connection.drop_table :table_name
fuente
Necesitaba eliminar nuestros scripts de migración junto con las tablas mismas ...
desde la ventana de terminal ejecutar:
o
fuente
la mejor manera que puedes hacer es
entonces haz lo siguiente
fuente
correr
¿Dónde
<version>
está el número de versión de su archivo de migración que desea revertir?Ejemplo:-
fuente
si alguien está buscando cómo hacerlo en SQL.
tipo
rails dbconsole
de terminalintroducir la contraseña
En consola hacer
USE db_name;
DROP TABLE table_name;
exit
No olvide eliminar el archivo de migración y la estructura de la tabla del esquema
fuente
rails db
si quieres soltar una tabla específica puedes hacerlo
de lo contrario, si desea eliminar toda su base de datos, puede hacerlo
fuente
Drop Table / Migration
ejecutar: - $ rails generar migración DropTablename
exp: - $ rails generan migración DropProducts
fuente
Ejecute este comando: -
entonces:
o si está utilizando la base de datos MySql, entonces:
show databases;
show tables;
drop table_name;
fuente
Si desea eliminar la tabla del esquema, realice la siguiente operación:
fuente