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. Это может означать:
- нет сервера, прослушивающего адрес / порт, к которому вы пытаетесь подключиться. Может быть
DATABASE_URL
неправильно установлен, и доктрина пытается подключиться к драйверу по умолчанию (т.е. localhost:1433) - сервер, к которому вы подключаетесь (или какой-то межсетевой экран между вами и сервером) отказывает в соединениях, но это менее вероятно.
Попробуйте добавить -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