Symfony 4.2 не подключается к Microsoft SQL Server

Я настраиваю новый проект на Symfony 4.2 и пытаюсь подключиться к Microsoft SQL Server в качестве базы данных, поэтому у меня есть следующие файлы:

/config/packages/doctrine.yaml:

parameters:
    # Adds a fallback DATABASE_URL if the env var is not set.
    # This allows you to run cache:warmup even if your
    # environment variables are not available yet.
    # You should not need to change this value.
    env(DATABASE_URL): ''

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_sqlsrv'
        #server_version: '5.7'
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        url: '%env(resolve:DATABASE_URL)%'
    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

/.env часть:

###> doctrine/doctrine-bundle ###
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
# Configure your db driver and server_version in config/packages/doctrine.yaml
DATABASE_URL=mssql://sa:root@DESKTOP-A9GIM4A\ISTANZA:1433/linkontro
###< doctrine/doctrine-bundle ###

Служба MSSQL работает правильно, но когда я пытаюсь запустить на CLI:php bin/console doctrine:schema:validateон возвращает эту ошибку:

Mapping
-------


 [OK] The mapping files are correct.


Database
--------


In PDOConnection.php line 31:

  SQLSTATE[08001]: [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it.


In PDOConnection.php line 27:

  SQLSTATE[08001]: [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it.


doctrine:schema:validate [--skip-mapping] [--skip-sync] [--em [EM]] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>

Любой ключ к тому, что происходит? Я попытался написать простой PHP-скрипт для проверки соединения, и это сработало. Таким образом, учетные данные верны, служба MSSQL включена, но единственный, кто не может подключиться, это Symfony.

2 ответа

Из описания ошибки: php-инициированное соединение отклоняется сервером MS SQL. Это может означать:

  1. нет сервера, прослушивающего адрес / порт, к которому вы пытаетесь подключиться. Может быть DATABASE_URL неправильно установлен, и доктрина пытается подключиться к драйверу по умолчанию (т.е. localhost:1433)
  2. сервер, к которому вы подключаетесь (или какой-то межсетевой экран между вами и сервером) отказывает в соединениях, но это менее вероятно.

Попробуйте добавить -v или же -vv к команде для большего многословия.

Из-за \ и некоторые неизвестные причины,

Мне легко заставить его работать с конфигурацией yaml, как показано ниже.

      doctrine:
    dbal:
        #url: '%env(resolve:DATABASE_URL)%'
        #driver_class: Realestate\MssqlBundle\Driver\PDODblib\Driver
        driver: 'pdo_sqlsrv'
        host: DESKTOP-A9GIM4A\ISTANZA
        dbname: linkontro
        user: sa
        password: root
Другие вопросы по тегам