Я новичок в Lumen и когда пытаюсь использовать:
php artisan migrate
Я получаю следующую ошибку.
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
Если я изменю «localhost» на «127.0.0.1», я получаю эту ошибку:
[PDOException] SQLSTATE[HY000] [2002] Connection refused
Если я использую:
php artisan migrate --database=Lumen
Я получил:
[InvalidArgumentException] Database [Lumen] not configured.
Вот мой .env файл
DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=Lumen DB_USERNAME=root DB_PASSWORD=root
Я читал другие вопросы о переполнении стека и пробовал решения, то есть настраивал PHP-версии и проверял путь к mysql.sock, и все в порядке. Я использую полный путь, и моя версия PHP верна.
Я использую MAMP и имею базу данных под названием «Lumen» (на данный момент нет таблиц).
Создал миграцию с помощью терминала:
php artisan make:migration --create=items create_items_table
Я использую службу php artisan (сервер 8000) для просмотра моего проекта, который я могу просмотреть.
MAMP is on: apache=80 nginx=80 mysql=3306
Я использовал ту же конфигурацию для моего проекта Laravel, и это работает нормально. Но у laravel есть файл database.php, который содержит все детали внутри него.
Надеюсь, этого достаточно, любая помощь будет очень признательна!
заранее спасибо
EDIT: Это мой файл app.php, остальное остается нетронутым.
require_once __DIR__.'/../vendor/autoload.php'; Dotenv::load(__DIR__.'/../'); $app = new Laravel\Lumen\Application( realpath(__DIR__.'/../') ); $app->withFacades(); $app->withEloquent();
Возможно ли, что вы забыли включить переменные dotenv? В файле bootstrap / app.php вы можете включить переменные среды, раскомментировав следующую строку:
Dotenv::load(__DIR__.'/../');
Lumen Документация о базах данных
После долгих раздумий я нашел ответ.
Проблема была в MAMP, сокет pdo для mysql не был в файле php.ini и должен был быть там включен.
[Pdo_mysql] ; If mysqlnd is used: Number of cache slots for the internal result set cache ; http://php.net/pdo_mysql.cache_size pdo_mysql.cache_size = 2000 ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. ; http://php.net/pdo_mysql.default-socket pdo_mysql.default_socket=
В том числе эта линия фиксировала все мои зонды.
К новым парням, которые пытались найти Люмена, после трех печальных часов, я наконец решил эту проблему. Это не ты, это МАМП!
Все это время MAMP не использовал порты по умолчанию 80 и 3306 для сети и mysql. Поэтому нажмите эту кнопку. Это все! И я опубликую это в своем блоге в ближайшее время: D