Php artisan migrate ничего не делает

Я установил Laravel 5 и Valet (v2.0.12) с помощью Homebrew на свой Macbook Pro (под управлением High Sierra (10.13.6)). Я загрузил чистый проект Laravel (laravel new blog).

Когда я пытаюсь выполнить миграцию (сижу в папке проекта, затем использую php artisan migrate), ничего не происходит. Терминал просто сидит и ничего не делает. Команда выполняется, но ничего. Ни ошибки, ни успеха, ничего. Даже добавление -v ничего не дает.

Я могу войти на сервер через командную строку. Я ввел правильные учетные данные в файл .env. Я даже могу запускать другие команды php artisan, но все команды migrate ничего не делают.

Мои файлы миграции:

2018_09_04_100609_create_users_table.php

<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

2018_09_04_100659_create_password-Resets_table.php

<?php

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

class CreatePasswordResetsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('password_resets', function (Blueprint $table) {
            $table->string('email')->index();
            $table->string('token');
            $table->timestamp('created_at')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('password_resets');
    }
}

Обновлять:

Проверил соединение с БД, используя следующее:

try {
    DB::connection();
    die("success!");
} catch (\Exception $e) {
    die("Could not connect to the database.  Please check your configuration. error:" . $e );
}

Получил «успех!».

Но затем я меняю DB::connection() на DB::connection()->getPdo(), он снова ничего не делает. Или это не актуально?

Хотите поделиться файлом миграции? Без него можно только гадать.

sskoko 04.09.2018 12:06

Вы сделали таблицы в папке миграции?

Zain Farooq 04.09.2018 12:06

Я добавил код в свой исходный пост.

dnwjn 04.09.2018 12:17

Попробуйте миграцию php artisan --force

sskoko 04.09.2018 12:25

или php artisan migrate: обновить

sskoko 04.09.2018 12:29

Можете ли вы сделать php artisan migrate:status, чтобы узнать, есть ли отложенные миграции?

brombeer 04.09.2018 12:30

Ни одна из функций php migrate не работает ...

dnwjn 04.09.2018 12:33

Вы уверены, что ваше приложение может правильно подключаться к вашей базе данных из значений .env?

Mtxz 04.09.2018 12:45

Если вы вручную создаете таблицу модели в своей базе данных, сможете ли вы вставлять значения с помощью запросов Eloquent или Laravel SQL?

Mtxz 04.09.2018 12:49

@Mtxz stackoverflow.com/questions/33432752/… проверьте этот вопрос, а также можете ли вы поделиться своим файлом env (раздел db)

Teoman Tıngır 04.09.2018 12:50

@Mtxz зацените опубликованное мной обновление.

dnwjn 04.09.2018 12:51

@ HasanTıngır хороший совет! Благодарность!

Mtxz 04.09.2018 12:51

@BlackFayah, не могли бы вы снова попробовать composer dump-autoload и migrate. (изменить: спасибо за обновление вашего вопроса). Может, это поможет.

Mtxz 04.09.2018 12:53

@ HasanTıngır на самом деле только что опробовал метод из вопроса, который вы указали!

dnwjn 04.09.2018 12:54

@Mtxz все тот же результат ...

dnwjn 04.09.2018 12:55

выдает ошибку с DB::connection()->getPdo()?

Teoman Tıngır 04.09.2018 12:56

@BlackFayah, ну это странно ... Я бы попытался удалить все миграции (сделать их резервную копию), создать новую миграцию с php artisan make:migration create_users_table, затем с composer dumpautoload, затем снова с migrate.

Mtxz 04.09.2018 12:56

Я думаю, что перед этой проблемой вы удалили таблицы (кроме таблицы миграции). И когда вы снова пытаетесь выполнить миграцию, laravel проверил таблицу миграции и увидел, что миграции уже выполнены, и не смог найти другую миграцию?

Teoman Tıngır 04.09.2018 12:59

@ HasanTıngır Нет. Просто создал базу данных, затем попытался выполнить миграцию. Больше ничего не делал. Обновлено: DB::connection()->getPdo() ничего не бросает.

dnwjn 04.09.2018 13:36

@Mtxz По-прежнему ничего ...

dnwjn 04.09.2018 13:37

Действительно? Даже после создания новой миграции с нуля? Можете ли вы попробовать добавить аргумент --path и указать пути миграции? видеть

Mtxz 04.09.2018 13:50

@Mtxz по-прежнему ничего не делает. Обновлено: на этот раз даже попробовал с Laravel 5.5.

dnwjn 04.09.2018 13:58

Wao .. Значит, вы клонируете совершенно новый ларавел, добавляете простую миграцию, а он вообще не работает? У меня нет идей ^^ `

Mtxz 05.09.2018 11:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
23
1 056
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Потому что проблема заключалась в том, что я использовал MySQL, тогда как мне следовало использовать MariaDB. В руководстве об этом нигде не упоминалось, поэтому я просто предположил, что MySQL было достаточно. Очевидно нет. Было бы неплохо, если бы ошибка показывала что-то подобное ...

Как вы это исправили?

Raccoon 10.02.2020 09:00

@Raccoon, если я правильно помню, я перешел с MySQL на MariaDB, но, к сожалению, я не могу вспомнить подробности по этому поводу.

dnwjn 15.06.2020 22:00

Ага, у меня это сработало. Спасибо

Doreen Chemweno 29.01.2021 14:19

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

Вот как я это сделал. После этой статьи: - Как установить MariaDB в Ubuntu 20.04 (я устанавливал его в каплю на digitalocean, но я считаю, что эта концепция будет полезна для всех.

Установите MariaDB:

sudo apt update
sudo apt install mariadb-server
sudo mysql_secure_installation

Откройте MariaDB и создайте пользователя с правами администратора:

sudo mariadb
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

Проверьте, работает ли БД по мере необходимости:

sudo systemctl status mariadb

если не работает:

sudo systemctl start mariadb

Для полного объяснения перейдите по ссылке, которой я поделился

Кроме того, если у вас уже установлен MySQL, вам придется удалить его, иначе это приведет к сбою MariaDB при перезагрузке. Я столкнулся с этой проблемой позже, и MariaDB продолжала зависать, когда я пытался запустить ее, и в браузере появилась ошибка MYSQL 2002. Вот как -

sudo systemctl stop mariadb
echo "/usr/sbin/mysqld { }" | sudo tee /etc/apparmor.d/usr.sbin.mysqld
sudo apparmor_parser -v -R /etc/apparmor.d/usr.sbin.mysqld

Выполнение этих команд должно отображаться

Removal succeeded for "/usr/sbin/mysqld".

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

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/usr.sbin.mysqld

Наконец, перезапустите mariadb

sudo systemctl start mariadb

Теперь все должно работать нормально и сохранится даже после перезагрузки.

Другие вопросы по теме