kasmagoli
kasmagoli

Reputation: 98

Symfony 4.2 doesnt connect to Microsoft SQL Server

I'm setting up a new project on Symfony 4.2, and I'm trying to connect to Microsoft SQL Server as database, so I have the following files:

/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 part:

###> 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 Service is running correctly, but when I try to run on CLI: php bin/console doctrine:schema:validate it returns this error:

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>

Any clue of what's going on? I tried to write a simple PHP script to check the connection, and it worked. So credentials are correct, MSSQL Service is on, but the only one who can't connect is Symfony.

Upvotes: 3

Views: 6601

Answers (2)

Bellash
Bellash

Reputation: 8204

Because of the \ and some unknown reasons,

I find it easear to have it to work using the yaml configuration like following.

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

Upvotes: 0

Oerd
Oerd

Reputation: 2313

From the error description: the php-initiated connection is refused by the MS SQL server. This could mean:

  1. there is no server listening on the address/port you are trying to connect to. Maybe DATABASE_URL is not set correctly and doctrine is trying to connect to the driver's default (i.e. localhost:1433)
  2. the server you are connecting to (or some firewall in between you and the server) is refusing connections - but this is less likely.

Try to add a -v or -vv to the command for more verbosity.

Upvotes: 1

Related Questions