Невозможно подключиться к базе данных MySQL, используя Laravel Vapor в производстве - PullRequest
0 голосов
/ 01 марта 2020

У меня есть небольшой простой API, в основном для целей тестирования, встроенный в Laravel 6 с использованием простой аутентификации JWT, чтобы разрешить вход в систему и ограниченный доступ к паре маршрутов. Все простые вещи на самом деле, и они прекрасно работают с помощью Homestead.

Однако на Vapor я не могу заставить его фактически общаться с базой данных. Вот как выглядит мойapor.yml, он не сильно отличается от значения по умолчанию, кроме добавления имени БД в

id: 7529
name: mything
environments:
    production:
        database: mydb
        database-user: vapor
        memory: 1024
        cli-memory: 512
        runtime: php-7.4
        build:
            - 'composer install'
            - 'php artisan jwt:secret'
            - 'php artisan event:cache'
            - 'npm ci && npm run prod && rm -rf node_modules'
    mything-environment:
        build:
            - 'composer install'
    staging:
        memory: 1024
        cli-memory: 512
        runtime: php-7.4
        build:
            - 'composer install'
            - 'php artisan jwt:secret'
            - 'php artisan event:cache'
            - 'npm ci && npm run dev && rm -rf node_modules'

. Я настроил БД, используя CLI в паре, как php vendor/bin/vapor mydb

И отредактировал файл .env.production следующим образом php vendor/bin/vapor env:pull production

И добавил соответствующие подробности conn

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydb

Я повторно развернул множество раз, и приложение работает , Однако при выполнении любой работы с базой данных у меня всегда возникает ошибка, например:

{"message":"SQLSTATE[HY000] [2002] Connection refused (SQL: insert into `users` (`name`, `email`, `password`, `updated_at`, `created_at`) values (testtest, test@test.com, $2y$10$SYYdAXC1aYrFUBQ/wVHcDuUgzBfTK76cvqxaiS2d8Kbg4Vbp/VGXK, 2020-02-29 22:37:36, 2020-02-29 22:37:36))","context":{"exception":{"class":"Illuminate\\Database\\QueryException","message":"SQLSTATE[HY000] [2002] Connection refused (SQL: insert into `users` (`name`, `email`, `password`, `updated_at`, `created_at`) values (testtest, test@test.com, $2y$10$SYYdAXC1aYrFUBQ/wVHcDuUgzBfTK76cvqxaiS2d8Kbg4Vbp/VGXK, 2020-02-29 22:37:36, 2020-02-29 22:37:36))","code":2002,"file":"/var/task/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669","previous":{"class":"PDOException","message":"SQLSTATE[HY000] [2002] Connection refused","code":2002,"file":"/var/task/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70"}},"aws_request_id":"9bba7341-a0f3-481c-961a-a0b59fcb64b9"},"level":400,"level_name":"ERROR","channel":"

Кто-нибудь может указать мне правильное направление? Я не верю, что мне нужно добавить в .env vars для пользователя и пароля, я все равно попробовал, но проблема все та же.

1 Ответ

1 голос
/ 01 марта 2020

Ваша конфигурация должна выглядеть следующим образом:

steam.yml

id: 7529
name: mything
environments:
    production:
        database: mydb
        memory: 1024
        cli-memory: 512
        runtime: php-7.4
        build:
            - 'composer install'
            - 'php artisan jwt:secret'
            - 'php artisan event:cache'
            - 'npm ci && npm run prod && rm -rf node_modules'
    mything-environment:
        build:
            - 'composer install'
    staging:
        memory: 1024
        cli-memory: 512
        runtime: php-7.4
        build:
            - 'composer install'
            - 'php artisan jwt:secret'
            - 'php artisan event:cache'
            - 'npm ci && npm run dev && rm -rf node_modules'

Нет необходимости указывать пользователя базы данных, если вы используете значение по умолчанию " steam "пользователь.

.env

DB_DATABASE=mydb

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

Также обратите внимание, что когда вы создаете среду базы данных в паре, единственной существующей схемой базы данных будет "пара" Чтобы подключиться к пользовательской базе данных с именем «mydb», сначала необходимо создать схему базы данных в этой среде базы данных.

...