Laravel не подключается к MySQL8 (AWS RDS) - PullRequest
0 голосов
/ 11 июля 2020

Я обновил установку Laravel 5.5 до версии 5.8, и теперь я пытаюсь обновить установку MySQL с 5.7 до 8.0.19. Установка Laravel находится на экземпляре EC2 и отлично работает с предыдущей установкой RDS MySQL / Aurora, но версия не сократила ее.

Мы запускаем это на сервере nginx.

Сначала я получил сообщение об ошибке, в котором говорилось:

(2/2) PDOException

SQLSTATE[HY000] [2002] Connection refused

Пытался изменить AWS uri и использовать вместо него ip, но вместо этого получил 504.

I пытался получить доступ к базе данных через MySQL Workbench и через new PDO('mysql:host=xx-rds-staging-mysql-8.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com;port=3306;dbname=database', 'username', 'password', [0, 2, 0, false, false, false]) и ... они оба отлично работают из экземпляра EC2.

Env-файл:

DB_CONNECTION="mysql"
DB_HOST_WRITE="xx-rds-staging-mysql-8.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com"
DB_HOST_READ="xx-rds-staging-mysql-8.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com"
DB_PORT_READ_AND_WRITE="3306"
DB_DATABASE="database"
DB_USERNAME="username"
DB_PASSWORD="password"

config / база данных. php

'mysql' => [
    'read' => [
        'host' => env('DB_HOST_READ', '127.0.0.1'),
    ],
    'write' => [
        'host' => env('DB_HOST_WRITE', '127.0.0.1'),
    ],
    'port' => env('DB_PORT_READ_AND_WRITE', '3306'),
    'driver' => 'mysql',
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
    'sticky' => true,
    'version'     => 8,
    'modes'  => [
        #'ONLY_FULL_GROUP_BY',
        'STRICT_TRANS_TABLES',
        'NO_ZERO_IN_DATE',
        'NO_ZERO_DATE',
        'ERROR_FOR_DIVISION_BY_ZERO',
        'NO_ENGINE_SUBSTITUTION',
    ],
    'options' => [
        PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
    ],
],

Я очистил кеш всеми командами-мастерами и удалив папку с кешем.

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

mysql -сервер не работает на той же машине, что и * 1 040 * -приложение и AWS не предлагает publi c ip, только uri.

Что делает его еще более странным, так это то, что я могу ввести php artisan tinker и запустить, например, User::first(); и он без проблем извлечет соответствующую строку из базы данных.

1 Ответ

0 голосов
/ 11 июля 2020

Нет подробной информации, но вы можете просмотреть следующие пункты:

  1. Убедитесь, что ваша конфигурация Laravel / php или файл подключения не изменились и имеют те же настройки, что и раньше.
  2. Вы установили какие-либо ограничения зоны c в RDS? Соответствует ли ему ваша среда тестирования?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...