migration - migracion - Ejecución de una migración de laravel 4 específica(archivo único)
ejecutar una migracion especifica en laravel (13)
No quiero ejecutar All Outstanding Migrations en laravel 4. Tengo 5 migraciones. Ahora solo quiero ejecutar una migración. en lugar de hacer: php migrar de forma artesanal Me gustaría ejecutar una migración específica como: php artesanal migrate MY_MIGRATION_TO_RUN
Di esta respuesta en otra publicación, pero puede hacerlo: ejecute la artisan migrate
para ejecutar todas las migraciones, luego los siguientes comandos SQL para actualizar la tabla de migraciones, haciendo que parezca que las migraciones se ejecutaron una a la vez:
SET @a = 0;
UPDATE migrations SET batch = @a:=@a+1;
Eso cambiará la columna del lote a 1, 2, 3, 4 ... etc. Agregue una condición WHERE batch>=...
allí (y actualice el valor inicial de @a
) si solo desea afectar ciertas migraciones.
Después de esto, puede artisan migrate:rollback
todo lo que se requiera, y pasará por las migraciones de a una por vez.
Hay una forma sencilla en que sé que hacer esto solo puede estar disponible para ti solo en el host local
- Modifique su archivo de migración según sea necesario
- abra su phpMyAdmin o lo que sea que use para ver su tabla de base de datos
- encuentre la tabla deseada y suéltela
- encuentre la tabla de migraciones y ábrala
- en esta tabla, debajo del campo de migración, encuentre el nombre de la tabla que desee y elimine su fila
- finalmente ejecute el comando
php artisan migrate
desde su línea de comando o terminal. esto solo migrará las tablas que no existen en la tabla de migraciones en la base de datos.
De esta manera es completamente seguro y no presentará ningún error o problema mientras se vea de una manera no profesional, pero aún funciona perfectamente.
buena suerte
La única forma de volver a ejecutar una migración es sucia. Debe abrir su base de datos y eliminar la línea en la tabla de migraciones que representa su migración.
A continuación, ejecute php artesanal migrar de nuevo.
Lanza una excepción en una migración, si no quieres aplicarla, y detendrá todo el proceso de migración.
Usando este enfoque, puede dividir su grupo de migración en pasos.
Parece que lo estás haciendo mal.
Las migraciones se realizaron para ser ejecutadas por Laravel una por una, en el orden exacto en que fueron creadas , por lo que puede realizar un seguimiento de la ejecución y el orden de ejecución. De esa forma, Laravel podrá deshacer con seguridad un lote de migraciones, sin correr el riesgo de romper su base de datos.
Darle al usuario la posibilidad de ejecutarlos manualmente, hace que sea imposible saber (con certeza) cómo deshacer los cambios en su base de datos.
Si realmente necesita ejecutar algo en su base de datos, es mejor que cree un script DDL y lo ejecute manualmente en su servidor web.
O simplemente crea una nueva migración y ejecútala usando artesano.
EDITAR:
Si necesita ejecutarlo primero, primero debe crearlo.
Si solo necesita reordenarlos, cambie el nombre del archivo para ser el primero. Las migraciones se crean con un timestemp:
2013_01_20_221554_table
Para crear una nueva migración antes de esta, puedes ponerle un nombre
2013_01_19_221554_myFirstMigration
Puede crear un directorio separado para sus migraciones desde su terminal de la siguiente manera:
mkdir /database/migrations/my_migrations
Y luego mueva la migración específica que desea ejecutar a ese directorio y ejecute este comando:
php artisan migrate --path=/database/migrations/my_migrations
¡Espero que esto ayude!
Puede poner migraciones en más carpetas y ejecutar algo como:
php artisan migrate --path=/app/database/migrations/my_migrations
Si desea ejecutar su último archivo de migración, haría lo siguiente:
php artisan migrate
También puede revertir a antes de agregar la migración con:
php artisan migrate: rollback
Si solo es para fines de prueba, así es como lo hago:
Para mi caso, tengo varias migraciones, una de ellas contiene la configuración de la aplicación.
Mientras estoy probando la aplicación y no todas las migraciones ya están configuradas, simplemente las muevo a una nueva carpeta "futuro". Este folleto no será tocado por artesano y solo ejecutará la migración que desee.
Solución sucia, pero funciona ...
Simplemente mueva las migraciones ya ejecutadas fuera de la carpeta app / config / database / migrations /. Luego ejecute el comando php artisan migrate
. Funcionó como un encanto para mí.
Un bonito y pequeño fragmento para aliviar cualquier temor cuando se ejecutan migraciones de Laravel 4 php artisan migrate --pretend
migraciones php artisan migrate --pretend
. Esto solo generará el SQL que se habría ejecutado si ejecutó la migración real.
Parece que sus 4 migraciones iniciales ya se han ejecutado. Supongo que cuando php artisan migrate
, solo ejecutará la nueva migración reciente.
Un consejo: asegura que todos tus up () y down () funcionen como esperas. Me gusta correr hacia arriba (), hacia abajo (), hacia arriba () cuando ejecuto mis migraciones, solo para probarlas. Sería horrible para usted obtener de 5 a 6 migraciones y darse cuenta de que no puede deshacerlas sin problemas, porque no hizo coincidir el down () con el up () al 100%.
¡Solo mis dos centavos! Espero que --pretend
ayuda.
Yo tengo el mismo problema. Copie los códigos de creación de la tabla en el primer archivo de migración, como a continuación:
public function up()
{
Schema::create(''posts'', function(Blueprint $table){
$table->increments(''id'');
// Other columns...
$table->timestamps();
});
Schema::create(''users'', function (Blueprint $table) {
$table->increments(''id'');
// Other columns...
$table->softDeletes()->nullable();
});
}
También puede cambiar (disminuir) el número de columna del batch
en la tabla de migrations
;)
Y luego ejecuta php artisan migrate
.
tan sencillo...! solo ve a tu carpeta de migración. mover todos los archivos de migración a otra carpeta. a continuación, devuelva toda la migración una a una en la carpeta de migración y ejecute la migración de una de ellas (php artesanal). cuando inserta un archivo de migración incorrecto en la carpeta maestra de migración y ejecuta php, la migración artesanal en el símbolo del sistema será un error.