una tablas tabla specific modificar migracion especifica ejecutar crear con column campo agregar php mysql laravel

php - tablas - modificar tabla laravel migration



La tabla de migraciĆ³n de Laravel ya existe pero quiero agregar una nueva, no la anterior (30)

  1. Descartar toda la base de datos de la tabla
  2. Actualice dos archivos en la base de datos de carpetas / migraciones /: 2014_10_12_000000_create_users_table.php, 2014_10_12_100000_create_password_resets_table.php

2014_10_12_100000_create_password_resets_table.php

Schema::create(''password_resets'', function (Blueprint $table) { $table->string(''email''); $table->string(''token''); $table->timestamp(''created_at'')->nullable(); });

2014_10_12_000000_create_users_table.php

Schema::create(''users'', function (Blueprint $table) { $table->increments(''id''); $table->string(''name''); $table->string(''email''); $table->string(''password''); $table->rememberToken(); $table->timestamps(); });

Previamente creé la tabla de usuarios. Ahora he creado una nueva migración para crear una nueva tabla de libros dentro de mi esquema. Cuando trato de ejecutar el comando

php artisan migrate

Muestra:

[Illuminate/Database/QueryException] SQLSTATE[42S01]: Base table or view already exists: 1050 Table ''users'' alre ady exists (SQL: create table `users` (`id` int unsigned not null auto_incr ement primary key, `username` varchar(255) not null, `email` varchar(255) n ot null, `password` varchar(255) not null, `created_at` timestamp default 0 not null, `updated_at` timestamp default 0 not null) default character set utf8 collate utf8_unicode_ci)

Aquí está mi nueva tabla de migración:

<?php use Illuminate/Database/Schema/Blueprint; use Illuminate/Database/Migrations/Migration; class CreateBooksTable extends Migration { public function up() { Schema::create(''books'', function(Blueprint $table) { $table->increments(''id''); $table->string(''name''); $table->string(''auther''); $table->string(''area''); $table->timestamps(); }); } public function down() { Schema::drop(''books''); } }

¿Cómo puedo deshacerme del error?


  1. Suelte todas las tablas manualmente en phpmyadmin .

  2. Vaya a cada archivo de migración en la database/migrations de database/migrations . Encuentra y elimina estos 2 códigos:

    a) -> index () (encontrado en 2014_10_12_100000_create_password_resets_table.php en la línea 17)

    b) -> unique () (encontrado en 2014_10_12_000000_create_users_table.php en la línea 19)

  3. Ejecute php artisan migrate

  4. Hecho.

Creo que esto sucede porque la última clase laravel (el 12 de febrero de 2018) ha eliminado la función de ->index() y ->unique()


¡Heredé un código realmente malo de alguien que no estaba usando migraciones!?, Así que pegué manualmente los nombres de archivo en las migraciones, olvidando eliminar el .php final

Entonces eso causó el error ''la tabla existe'' a pesar del nombre del archivo y la coincidencia de migración.

2018_05_07_142737_create_users_table.php - WRONG 2018_05_07_142737_create_users_table - CORRECTO


Agregue esto a AppServiceProvider.php

use Illuminate/Support/Facades/Schema; public function boot() { Schema::defaultStringLength(191); }


Crear una base de datos literalmente lleva segundos.

Exporte su base de datos actual en caso de que tenga datos confidenciales.

Verifique sus migraciones y elimine todos los métodos incorrectos.

Descarte la base de datos y vuelva a crear la base de datos.

php artisan migrate

Luego puede devolver los datos previamente en la base de datos.


Creo que mi respuesta ayudará más. También me enfrenté a este error. Luego eliminé un archivo de migración específico e intenté recrearlo por php artisan.

Pero antes de llegar a este punto hace 1 o 2 días mientras miraba videos laracast sobre la migración, estaba pensando en revertir y migrar una tabla específica. Por alguna razón, eliminé un archivo de migración específico e intenté recrearlo, pero al hacerlo obtuve:

[ErrorException] include (C: / wamp64 / www / laraveldeneme / vendor / composer /../../ database / migrations / 2017_01_09_082715_create_articles_table.php): no se pudo abrir la secuencia: No existe tal archivo o directorio

Cuando reviso ese archivo, vi la línea a continuación en la parte superior de la matriz en el archivo autoload_classmap.php:

''CreateArticlesTable'' => $ baseDir. ''/ Database / migrations / 2017_01_09_083946_create_articles_table.php'',

Aunque revierta o elimine un archivo de migración, el registro relacionado con el archivo de migración permanece en el archivo compositor autoload_classmap.php.

Para resolver este problema, he encontrado el comando del compositor a continuación desde algún lugar que no puedo recordar.

composer dump-autoload

Cuando obtengo este código, la línea relacionada con el archivo de migración que eliminé desaparece. Entonces corrí:

php artisan make:migration create_articles_table --create=articles

Finalmente recreé mi archivo de migración con el mismo nombre


Dejas caer todo el tabel en tu base de datos, luego

php artisan migrate:refresh

edite su archivo de migración

php artisan migrate:rollback

php artisan migrate nuevo ^ _ ^

hecho tu mesa !!


Descarte toda la tabla de base de datos y ejecute esta línea en la ruta de su proyecto a través de CMD

php artisan migrate


Después de la reversión, verifique sus tablas, asegúrese de eliminarlas.

Si hay un problema, elimine las tablas manualmente de la aplicación de base de datos como phpmyadmin (estoy usando sequel pro para mac).

Corrija sus métodos inactivos en la migración.

Nota: deshaga y luego migre. No use migrate: refresh para notar dónde ha estado el error.

Después de eso, puede probar con nueva base de datos para la prueba. para detectar dónde está el problema.

También intenta leer esta question


Editar AppServiceProvider.php se encontrará en app / Providers / AppServiceProvider.php y agregar

use Illuminate/Support/Facades/Schema; public function boot() { Schema::defaultStringLength(191); }

Entonces corre

composer update

En tu terminal. Me ayudó, puede que funcione para ti también.


En laravel 5.4, si tiene este problema. Mira este enlace

-o-

Vaya a esta página en app / Providers / AppServiceProvider.php y agregue el código a continuación

use Illuminate/Support/Facades/Schema; public function boot() { Schema::defaultStringLength(191); }


En v5.x, aún puede enfrentar el problema. Entonces, intente eliminar la tabla relacionada manualmente primero usando

php artisan tinker

Entonces

Schema::drop(''books'')

(y salir con q )

Ahora, puede php artisan migrate:rollback exitosamente php artisan migrate:rollback y php artisan migrate .

Si esto sucede repetidamente, debe verificar que el método down() en su migración muestre el nombre correcto de la tabla. (Puede ser un problema si ha cambiado los nombres de su tabla).


La respuesta es muy sencilla:

Primero tome una copia de seguridad de la carpeta bootstrap / cache.

Luego, elimine todos los archivos de la carpeta bootstrap / cache.

Ahora ejecuta:

php artisan migrate


Necesitas correr

php artisan migrate:rollback

si eso también falla, simplemente ingrese y suelte todas las tablas que puede tener que hacer, ya que parece que su tabla de migración está en mal estado o su tabla de usuario cuando ejecutó una reversión anterior no eliminó la tabla.

EDITAR:

La razón por la que esto sucede es que ejecutó una reversión anteriormente y tuvo algún error en el código o no dejó caer la tabla. Sin embargo, esto todavía arruina la tabla de migración de laravel y, en lo que respecta a esto, ahora no tiene antecedentes de empujar la tabla de usuario hacia arriba. Sin embargo, la tabla de usuario ya existe y este error es throw.


Primero suelte la tabla de usuarios en la base de datos. Luego, vaya a propmt de comando y escriba

php artisan migrate

todos los conjuntos. Creo que esta respuesta ayuda.


Primero verifique la tabla de migraciones en su base de datos y asegúrese de que sus archivos de migración en la carpeta de la base de datos en su proyecto sean iguales a los datos de esta tabla. A veces, si crea archivos de migración de forma manual, aparece este error cuando ejecuta el comando migrate en el compositor.


Puede eliminar todas las tablas, pero no será una buena práctica, en su lugar, pruebe este comando

php artisan migrate:fresh

Asegúrese de utilizar la convención de nomenclatura correctamente. He probado esto en la versión laravel 5.7. Es importante no probar este comando cuando su sitio está en el servidor porque deja caer toda la información.


Puede usar php artisan migrate:fresh para soltar todas las tablas y luego migrar. Espero eso ayude


Resolví tu problema eliminando la tabla de "usuario" en sequel-pro (no hay datos en mi tabla de usuario) y luego puedes ejecutar php artisan migrate

Aquí hay capturas de pantalla antes y después

antes de eliminar el usuario de la tabla de usuario

después de eliminar el usuario de la tabla


Siempre puede verificar la existencia de una tabla antes de crearla.

if(!Schema::hasTable(''books'')){ Schema::create(''books'', function(Blueprint $table) { $table->increments(''id''); $table->string(''name''); $table->string(''auther''); $table->string(''area''); $table->timestamps(); }); }


También puede insertar antes de Schema::create(''books'', function(Blueprint $table) el siguiente código Schema::drop(''books'');


También tuve este problema, acabo de encontrar esta respuesta en un video de Youtube . No estoy seguro si es ideal, pero es lo mejor que he visto.

Parece el archivo AppServiceProvider.php del directorio de proveedores dando una longitud al esquema. En este caso 191 . Funciona como magia. Screenshot Luego corrió: php artisan migrate:fresh . Espero que esto funcione.


Tuve el mismo problema, el problema está en el nombre guardado en la tabla de migraciones dentro de la base de datos, porque en mi base de datos existe 2017_10_18_200000_name y en los archivos 2016_10_18_200000_name , después de cambiar el nombre del archivo que funciona.


Tuve el mismo problema. La razón es que su nombre de archivo en la carpeta de migraciones no coincide con el nombre de la migración en su base de datos (consulte la tabla de migraciones). Deberían ser iguales.


Tuve un problema similar después de jugar con restricciones de clave externa. Una de mis tablas (notas) desapareció y una seguía volviendo (tareas) incluso después de dejarla caer en MySQL, lo que me impidió ejecutar: php artisan migrate/refresh/reset , que produjo la excepción 42s01 anterior.

Lo que hice para resolverlo fue ssh into vagrant y luego ir a MySQL ( vagrant ssh, mysql -u homestead -p secret ), luego: DROP DATABASE homestead; Then CREATE DATABASE homestead; Then exit mysql and run: DROP DATABASE homestead; Then CREATE DATABASE homestead; Then exit mysql and run: DROP DATABASE homestead; Then CREATE DATABASE homestead; Then exit mysql and run: php artisan migrate`.

Obviamente, esta solución no funcionará para las personas que no usan vagabundo / granja. No afirmo de ninguna manera que este es un flujo de trabajo adecuado, pero resolvió mi problema que se parece mucho al anterior.


vaya a phpmyadmin y suelte la base de datos que creó para laravel, luego vuelva a crearla y luego vaya al proyecto raíz cmd (si usa Windows) y escriba php artisan migrate


EDITAR: (para laravel)

Acabo de encontrar este problema mientras trabajaba en un proyecto en laravel. Mis tablas estaban desordenadas, necesitaban cambios frecuentes en las columnas. Una vez que las mesas estuvieron allí, ya no pude ejecutar php artisan migrate migrate.

He hecho lo siguiente para deshacerme del problema.

  1. Descarte las tablas en la base de datos [cada una, incluida la tabla de migración]
  2. $ composer dump-autoload -o
  3. php artisan migrate

Comentario anterior, con respecto a la luz

[Bueno, bastante tarde para la fiesta (y posiblemente una fiesta diferente a la que estaba buscando). Me golpeé la cabeza, grité en voz alta y, por la gracia del cráneo gris, encontré una solución.]

Estoy desarrollando una aplicación tranquila usando lumen y soy nuevo en ella. Este es mi primer proyecto / experimento con laraval y lumen. Mis dependencias

"require": { "php": ">=5.6.4", "laravel/lumen-framework": "5.4.*", "vlucas/phpdotenv": "~2.2", "barryvdh/laravel-cors": "^0.8.6", "league/fractal": "^0.13.0" }, "require-dev": { "fzaninotto/faker": "~1.4", "phpunit/phpunit": "~5.0", "mockery/mockery": "~0.9.4" }

De todos modos, todo estuvo bien hasta ayer por la noche, pero de repente phpunit comenzó a quejarse de una mesa ya existente.

Caused by PDOException: SQLSTATE[42S01]: Base table or view already exists: 1050 Table ''items'' already exists

Duh! Items tabla de Items debería existir en la base de datos, o de lo contrario, ¿cómo se supone que guarde los elementos?

De todos modos, el problema solo persistió en las clases de prueba, pero extrañamente no en el navegador (verifiqué con chrome, firefox y carteros que alteran los encabezados). Estaba recibiendo respuestas JSON con datos como se esperaba.

Dejé caer la base de datos y la recreé con mucha migrate , refresh y rollback . Todo estaba bien pero en phpunit .

Por desesperación, eliminé mis archivos de migración (por supuesto, primero hice una copia de seguridad) y luego phpunit en la terminal. Lo mismo de nuevo.

De repente, recordé que puse un nombre de base de datos diferente en el archivo phpunit.xml solo con fines de prueba. ¡Revisé esa base de datos y adivina qué! Había una mesa llamada items . phpunit esta tabla manualmente, phpunit , todo comenzó a funcionar bien.

Estoy documentando mi experiencia solo para referencias futuras y con la esperanza de que esto pueda ayudar a alguien en el futuro.


Solución: la tabla de migración de Laravel ya existe ... || Funciona en Laravel 5.8 también

archivo app / Providers / AppServiceProvider.php

y dentro del método de arranque establece una longitud de cadena predeterminada:

public function boot() { Schema::defaultStringLength(191); }

y abierto

config / database.php

''charset'' =>''utf8mb4'', ''collation'' =>''utf8mb4_unicode_ci'',

y cambiarlo a

''charset'' =>''utf8'', ''collation'' =>''utf8_unicode_ci'',

guarde todos los archivos y vaya al símbolo del sistema

php artisan migrate


PELIGRO : la mayoría de estas respuestas borrará su base de datos y no se recomienda su uso en producción.

Está claro que hay muchas "soluciones" para este problema, pero todas estas soluciones que leí son soluciones muy destructivas y ninguna de ellas funciona para una base de datos de producción. Según el número de soluciones, también parece que podría haber varias causas para este error.

Mi error fue causado por una entrada faltante en mi tabla de migraciones. No estoy seguro exactamente cómo sucedió, pero al agregarlo de nuevo ya no recibí el error.


php artisan migrate:rollback

Comprobar solución: solución oficial de Laravel

Como se describe en la guide Migraciones para solucionar esto, todo lo que tiene que hacer es editar su archivo app / Providers / AppServiceProvider.php y, dentro del método de arranque, establecer una longitud de cadena predeterminada:

use Illuminate/Support/Facades/Schema; public function boot() { Schema::defaultStringLength(191); }

Después del comando anterior, debe eliminar todas las tablas restantes manualmente y luego ejecutar el comando:

php artisan migrate:fresh