команда artisan migrate не мигрирует, не выводит никаких результатов

Я работаю над своим первым проектом Laravel. Я пытаюсь создать миграцию базы данных и запустить ее с помощью artisan migrate. Миграции не выполняются, и команда не возвращает никаких результатов.

Ключевые факты:

  • Я использовал artisan make:migration для создания файла миграции с правильным путем к файлу.
  • Когда я впервые запустил команду, она создала таблицу миграции в базе данных. Так что я знаю, что он попадает в базу данных и, по крайней мере, делает что-то правильно.
  • Когда у меня нет файлов в папке database/migrations, я получаю команду Nothing to migrate.
  • Помимо этих двух сообщений, я не получил никакого вывода от команды. Ни ошибок, ничего. Кроме того, нет записей в таблице миграции в базе данных.
  • artisan migrate --verbose также не возвращает никаких результатов.
  • Разрешения на storage/logs равны drwxrwxrwx. Я владелец каталога.
  • storage/logs/laravel.log не содержит ничего, относящегося к миграции.

Я включил код для моей первой миграции ниже.

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

Может я что-то не так настроил? Что мне нужно сделать, чтобы запустить эти миграции?

2017_01_17_151638_user.php

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

// Create the classes associated with user management.

class UserMigration extends Migration
{
    public function up()
    {
      Schema::create('tblUser', function (Blueprint $table) {
          $table->increments('id');
          $table->string('name');
          $table->string('email')->unique();
          $table->string('password');
          $table->rememberToken();
          $table->timestamps();
      });

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

    public function down()
    {
      Schema::dropIfExists('tblUserPasswordReset');
      Schema::dropIfExists('tblUser');
    }
}

person Jay Bienvenu    schedule 17.01.2017    source источник
comment
Убедитесь, что папка /storage/logs доступна для записи; он может столкнуться с ошибкой и попытаться зарегистрировать ее там, и в зависимости от вашей среды разработки он может не сообщать об этом должным образом. Кроме того, возможно, включите скриншот вашего терминала, выполняющего команду.   -  person Tim Lewis    schedule 17.01.2017
comment
В моем случае XDebug прослушивал и останавливал скрипт. После отключения прослушивателя команда прошла без ошибок.   -  person boryn    schedule 24.06.2020


Ответы (11)


пытаться

php artisan migrate:rollback

тогда попробуй

php artisan migrate

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

person ATechGuy    schedule 17.01.2017
comment
Нет эффекта. php artisan migrate:rollback сообщает Nothing to rollback. php artisan migrate после этого ничего не делает. Таблица миграции по-прежнему пуста. - person Jay Bienvenu; 18.01.2017
comment
make:migration create_thetable.php ‹----- эта команда вообще что-нибудь выводит? Также делает это: php artisan migrate:reset производит что-нибудь? - person ATechGuy; 18.01.2017

Для меня единственный способ заставить его работать - перезапустить службу mysql (в OSX никогда не видел этого в debian).

person acubcn    schedule 19.03.2018
comment
Перезапуск службы mysql также решает эту проблему в Debian. - person drowsyTicker; 05.08.2018

Я почти уверен, что только что понял проблему.

Я создал нового пользователя в MySQL и назначил все права на все базы данных через оболочку mysql:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';

GRANT ALL ON *.* to 'user1'@'localhost';

Не забудьте изменить информацию о подключении в .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=user1
DB_PASSWORD=password
person Tim    schedule 29.08.2018

Дважды проверьте следующее:

  • Файлы миграции фактически создаются в database/migrations
  • Дважды проверьте, что файл журнала и каталог доступны для записи
  • Убедитесь, что разрешения для папок database/migrations установлены по умолчанию, которые поставляются с установкой laravel.
  • Дважды проверьте файл laravel.log
person Chris    schedule 17.01.2017
comment
Файлы миграции находятся в database/migrations. Права доступа к каталогу storage/logs: drwxrwxrwx. В файле laravel.log есть несколько старых записей, но ничего не относящегося к миграции. - person Jay Bienvenu; 17.01.2017

  • Сначала проверьте, запущены ли ваши службы Apache и Mysql, перейдя в ваш localhost/phpmyadmin.
  • проверьте свой терминал или cmd, что вы находитесь в правильном каталоге пути к файлу.
  • затем напишите php artisan migrate
  • если что-то показывает, дайте мне знать здесь, если нет, перейдите в свой laravel.log для деталей
person Uzair    schedule 17.01.2017

Попробуйте:composer dump-autoload

Затем снова запустите php artisan migrate

Возможная проблема: https://stackoverflow.com/a/33974248/7377984

person Paras    schedule 17.01.2017
comment
Нет эффекта. composer dump-autoload сообщает Generating autoload files, но по-прежнему никаких действий в отношении php artisan migrate. - person Jay Bienvenu; 18.01.2017
comment
Попробуйте php artisan clear-compiled, затем composer dump-autoload, затем php artisan optimize и, наконец, php artisan migrate - person Paras; 18.01.2017

Не забудьте добавить свои миграции в DatabaseSeeder.php. См. эту документацию Вызов дополнительных сеялок.

В DatabaseSeeder добавьте это:

$this->call(UserMigration::class);

Надеюсь, поможет.

person Carlos Adames    schedule 23.02.2017

Была именно эта проблема, и ни одно из перечисленных решений ничего не изменило. Неупомянутое решение, которое работает в этом случае для меня, было

composer update --no-scripts

Я стер все и начал с нуля, забыл заново инициализировать композитор и все установить.

person Chris Hoban    schedule 29.03.2017

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

В любом из файлов .env убедитесь, что следующие параметры имеют значения:

DB_CONNECTION=master
DB_DATABASE=my_databse_name

или альтернативно в /config/database.php :

'default' => env('DB_CONNECTION', 'master'),

'connections' => [

        'master' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'my_databse_name'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => 'cms_',
            'strict' => true,
            'engine' => null,
        ],
],
person Marc    schedule 27.06.2017

у меня была эта проблема в начале этого месяца, что я сделал, я тщательно проверил конфигурацию сервера mysql, перезапустил сервер mysql и саму IDE.

person abokor hassan    schedule 20.03.2019

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

person sohan1510    schedule 05.05.2021