首页 > 解决方案 > 无法从 Doctrine PHP 连接到 AWS 上的 MySQL 实例

问题描述

使用

        "php": "^7.1.3",
        "doctrine/doctrine-bundle": "^1.11",
        "doctrine/doctrine-fixtures-bundle": "^3.1",
        "doctrine/doctrine-migrations-bundle": "^2.0",
        "doctrine/orm": "^2.6",
        "friendsofsymfony/oauth-server-bundle": "^1.6",
        "friendsofsymfony/rest-bundle": "^2.5",
        "friendsofsymfony/user-bundle": "^2.1",
        "jms/serializer-bundle": "^3.3",
        "symfony/asset": "4.2.*",
        "symfony/yaml": "4.2.*"

我似乎无法正确配置将 Symfony Doctrine PHP API 连接到 AWS 数据库实例上的 MySQL 数据库。我在所有实例上运行 Ubuntu 16+。我能够毫无问题地将我的本地 API 连接到我的本地 MySQL,并且我能够以相同的方式连接我的测试服务器,但是当我移动到 AWS 上的生产服务器时,我尝试运行以下命令:

php bin/console doctrine:schema:update --force --env=prod --complete

我收到以下错误:

In AbstractMySQLDriver.php line 93: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory

我尝试了多种配置设置和多次搜索,但在几乎所有情况下,问题都在于使用 localhost 与 127.0.0.1 的设置,这不是我的问题,因为我试图从 AWS EC2(托管我的 API)连接到AWS 数据库实例。

我检查了多次,我的用户名、数据库、密码和路径配置都是正确的,我已经通过手动登录到数据库实例对其进行了测试。

这是我的 config/packages/doctrine.yaml 中的配置


    doctrine:
        dbal:
            # configure these for your database server
            driver: 'pdo_mysql'
            server_version: '5.7'
            charset: utf8
            default_table_options:
                charset: utf8
                collate: utf8_unicode_ci
            host: 'api-database.XXXXXXXXXXX.ca-central-1.rds.amazonaws.com'
            port: '3306'
            dbname: 'XXXXXXX'
            user: 'XXXXX'
            password: 'XXXXXXXXXXXXXXXXXXXXXXX'
        orm:
            auto_generate_proxy_classes: true
            naming_strategy: doctrine.orm.naming_strategy.underscore
            auto_mapping: true
            mappings:
                App:
                    is_bundle: false
                    type: annotation
                    dir: '%kernel.project_dir%/src/Entity'
                    prefix: 'App\Entity'
                    alias: App
    monolog:
        handlers:
            main:
                type: stream
                path: '%kernel.logs_dir%/%kernel.environment%.log'
                level: debug
                channels: ['!event']

我应该能够连接到数据库并运行迁移以更新数据库架构。

标签: phpmysqlamazon-web-servicesdoctrinedbal

解决方案


我不确定发生了什么,但在我重新启动服务器后它开始工作(我重新启动,因为我更新了一些安全包)。似乎我没有更改的配置是正确的,因此可能存在缓存问题或其他相关问题。


推荐阅读