Таблица Laravel Migration уже существует, но я хочу добавить новые не старые

Я ранее создал таблицу пользователей. Теперь я создал новую миграцию, чтобы создать новую таблицу книг внутри моей схемы. Когда я пытаюсь запустить команду

php artisan migrate 

Это показывает:

 [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) 

Вот моя новая таблица миграции:

 <?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'); } } 

Как я могу избавиться от ошибки?

Вам нужно запустить

 php artisan migrate:rollback 

если это также не сработает, просто зайдите и отбросьте все таблицы, которые вам, возможно, придется делать, поскольку кажется, что ваша таблица миграции перепутана, или ваша пользовательская таблица при предыдущем откате не отбросила таблицу.

РЕДАКТИРОВАТЬ:

Причина этого заключается в том, что раньше вы выполняли откат, и у него была некоторая ошибка в коде или не выпадала из таблицы. Тем не менее, это все-таки путается с таблицей миграции laravel, и, насколько это известно, у вас нет записей о том, как подтолкнуть таблицу пользователя. Пользовательская таблица уже существует, и эта ошибка выбрасывается.

В версии v5.x вы все еще можете столкнуться с проблемой. Итак, сначала попробуйте вручную удалить связанную таблицу

php artisan tinker

затем

Schema::drop('books')

(и выход с q )

Теперь вы можете успешно php artisan migrate:rollback и php artisan migrate .

Если это происходит неоднократно, вы должны проверить, что метод down() в вашей миграции показывает правильное имя таблицы. (Может быть получено, если вы изменили имена таблиц.)

У меня были такие же проблемы. Причина в том, что ваше имя файла в папке миграции не совпадает с именем миграции в вашей базе данных (см. Таблицу миграции). Они должны быть одинаковыми.

Также u может вставить forfor Schema::create('books', function(Blueprint $table) следующий код Schema::drop('books');

У меня была аналогичная проблема после возиться с ограничениями внешнего ключа. Одна из моих таблиц (заметок) исчезла, и каждый возвращался назад (задачи) даже после того, как сбросил ее в MySQL, что мешает мне запустить: php artisan migrate/refresh/reset , из-за чего вышло исключение выше 42s01.

То, что я сделал, чтобы решить это, было ssh в бродяжничестве, затем перейдите в MySQL ( vagrant ssh, mysql -u homestead -p secret ), затем: 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`.

Очевидно, что это решение не будет работать для людей, не использующих бродягу / усадьбу. Не претендуя на то, что это правильный рабочий процесс, но он решил мою проблему, которая очень похожа на предыдущую.

Я унаследовал какой-то настоящий плохой код от кого-то, кто не использовал миграции!?, Поэтому вручную вставлял имена файлов в миграции, забывая удалить конечный .php

Таким образом, возникла ошибка «table exists», несмотря на совпадение имени файла и миграции.

2018_05_07_142737_create_users_table.php – WRONG 2018_05_07_142737_create_users_table – ПРАВИЛЬНО

вы удаляете все табуляции в своей базе данных, затем

сделай это

 php artisan migrate:refresh 

отредактируйте файл миграции

 php artisan migrate:rollback 

php artisan migrate снова php artisan migrate ^ _ ^

сделал ваш стол !!

Я думаю, что мой ответ поможет больше. Я тоже столкнулся с этой ошибкой. Затем я удалил конкретный файл миграции и попытался воссоздать php artisan.

Но прежде чем получить этот момент 1 или 2 дня назад, пока я смотрел видео laracast о мириале, я думал о откате и миграции конкретной таблицы. По какой-то причине я удалил конкретный файл миграции и попытался воссоздать, но при этом я получил:

[ErrorException] включает (C: \ wamp64 \ www \ laraveldeneme \ vendor \ composer /../../ database / migrations / 2017_01_09_082715_create_articles_table.php): не удалось открыть поток: нет такого файла или каталога

Когда я проверяю этот файл, я увидел строку под вершиной массива в файле autoload_classmap.php:

'CreateArticlesTable' => $ BASEDIR. / Базы данных / миграции / 2017_01_09_083946_create_articles_table.php ',

При удалении или удалении файла миграции запись, связанная с файлом миграции, сохраняется в файле автозагрузки автозагрузки_classmap.php.

Чтобы решить эту проблему, я нашел команду композитора ниже, откуда-то я не могу вспомнить.

 composer dump-autoload 

Когда я rand этот код, строка, связанная с файлом миграции, который я удалил, исчез. Затем я побежал:

 php artisan make:migration create_articles_table --create=articles 

Наконец, я воссоздал файл миграции с тем же именем

EDIT: (для laravel)

Просто пришел к этому вопросу во время работы над проектом в laravel. Мои таблицы были испорчены, что необходимо для частых изменений в столбцах. После того, как таблицы были там, мне больше не удалось выполнить php artisan migrate .

Я сделал следующее, чтобы избавиться от проблемы,

  1. Отбрасывать таблицы в базе данных [каждый, включая таблицу миграции]
  2. $ composer dump-autoload -o
  3. php artisan migrate

Предыдущий комментарий, касающийся просвета

[Ну, довольно поздно вечеринке (и, возможно, другой стороне, чем то, что я искал). Я ударил головой, кричал вслух и по милости серого черепа только нашел решение.]

Я разрабатываю успокаивающее приложение, использующее просвет, и я новичок в этом. Это мой первый проект / эксперимент с использованием laraval и lumen. Мои зависимости –

 "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" } 

Во всяком случае, все было в порядке до вчерашней ночи, но вдруг phpunit начал жаловаться на уже существовавший стол.

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

Duh! Таблица Items должна существовать в базе данных, или как я должен сохранять элементы!

В любом случае проблема сохранялась только в тестовых классах, но странно не в браузере (я проверял с хром, firefox и postman изменяя заголовки). Я получал ответы JSON с данными, как ожидалось.

Я бросил базу данных и воссоздал ее с большим количеством migrate , refresh , rollback . Все было хорошо, но в phpunit .

Из отчаяния я удалил файлы миграции (конечно, сначала взял резервную копию), а затем phpunit в терминале. То же самое сначала.

Внезапно я вспомнил, что я поместил другое имя базы данных в файл phpunit.xml для целей тестирования. Я проверил эту базу данных и угадал, что! Была таблица с именем items . Я удалил эту таблицу вручную, запустил phpunit , все началось нормально.

Я документирую свой опыт только для будущих ссылок и надеюсь, что это может помочь кому-то в будущем.

После отката проверьте свои таблицы, убедитесь в удалении.

Если есть проблема, удалите таблицы вручную из приложения базы данных, например phpmyadmin (я использую сиквел pro для mac).

Исправьте свои методы вниз в процессе миграции.

Примечание. Затем выполните откат, а затем выполните миграцию. Не используйте migrate: refresh, чтобы заметить, где была ошибка.

После этого вы можете протестировать новый db для тестирования. чтобы определить, где проблема.

Также попробуйте прочитать этот вопрос

перейдите в phpmyadmin и отбросьте базу данных, которую вы создали для laravel, затем создайте ее снова, затем перейдите в cmd (if use windows) root project и введите php artisan migrate

Сначала запустите таблицу пользователей в базе данных. Затем перейдите в команду propmt и введите

php artisan migrate

все наборы. Я думаю, что этот ответ помогает.

Добавьте это в AppServiceProvider.php

 use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); } 
  1. Удалить всю базу данных таблицы
  2. Обновите два файла в папке базы данных / миграции /: 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(); }); 

В файле AppServiceProvider.php добавьте код:

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

В моем случае это помогло удачи

В laravel 5.4, Если у вас возникла эта проблема. Проверить эту ссылку

-или-

Перейдите на эту страницу в app / Providers / AppServiceProvider.php и добавьте код ниже

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

Редактировать AppServiceProvider.php можно найти в приложении / Providers / AppServiceProvider.php и добавить

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

Затем запустите

 composer update 

На вашем терминале. Это помогло мне, возможно, это сработает и для вас.

Я решил вашу проблему, удалив таблицу «user» в файле sequel-pro (в моей таблице пользователя нет данных), а затем вы можете запустить php artisan migrate

Вот до и после скриншотов

перед удалением пользователя пользовательской таблицы

введите описание изображения здесь

после удаления пользователя таблицы введите описание изображения здесь