Eliminar una migración por completo (junto con su clase) en Laravel. Eliminar tabla

publicado por: Anonymous

Tengo un problema al crear nuevamente las tablas, me dice que la clase ya existe.

Mi problema desde el principio fue que cree las tablas en desorden, así como esta la lista.

  • Tabla Idiomas
  • Tabla Experiencias
  • Tabla Usuarios

Cuando las tenia que haber creado en este orden.

  • Tabla Usuarios
  • Tabla Idiomas
  • Tabla Experiencias

Esto porque las tablas de abajo (Idiomas y Experiencias) tienen llave foránea que depende de la tabla Usuarios.

Entonces decidí crearlas de nuevo, las elimine "manualmente" solo borre los archivos, y al intentar volver a ejecutar el comando

php artisan make:migration create_usuario_table

Me sale el error de que la clase ya existe.

InvalidArgumentException  : A CreateUsuariosTable class already exists.

protected function ensureMigrationDoesntAlreadyExist($name)
  {
    if (class_exists($className = $this->getClassName($name))) {
    throw new InvalidArgumentException("A {$className} class already exists.");
    }
  }

estuve buscando en el foro y encontre que se puede usar

Schema::dropIfExists(‘usuarios’);

Schema::drop(‘idiomas’);

pero no me funciona, o lo estoy aplicando mal.

Espero me puedan ayudar con esto, gracias.

solución

La instrucción Schema::drop('idiomas'); o similar, se incluye en las migraciones para hacer rollbacks, lo que no siempre funciona, por ejemplo si hay algún problema añadiendo claves ajenas. Puede ser necesario ir a la tabla de migraciones y eliminar el registro correspondiente a la tabla donde falla la migración, antes de corregir el código.

Vamos a suponer que estas trabajando solo y no tienes datos que necesites preservar en la base de datos.

Antes de ejecutar las migraciones, partimos de una base de datos vacía, sin ninguna tabla, lo que incluye la tabla migrations. Puedes eliminar todas las tablas o la base de datos, volviendo a crearla.

Deberías tener un fichero de migración por cada tabla que vas a crear en la BD. Revisa que no crees más de una tabla en algún fichero.

Si creas las claves ajenas al crear las tablas, estos ficheros deberán tener un orden determinado. Tienes la posibilidad de renombrar los ficheros si el orden no es el correcto. O dejar la creación de claves ajenas para una última migración.

El proceso será ejecutar, limpiar la BD y volver a ejecutar… hasta que todas las migraciones se ejecuten correctamente.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *