使用Doctrine pdo_sqlsrv连接到数据库

时间:2017-07-19 16:48:00

标签: php symfony doctrine symfony-3.2 symfony-3.3

我试图在SQL Server 2000中连接到我的数据库,但是我收到错误

  

无法找到驱动程序

当我使用pdo_sqlsrv时。 但如果我使用sqlsrv我会收到错误

  

尝试调用函数" sqlsrv_configure"从命名空间   "学说\ DBAL \驱动\ SQLSRV"

这是我的config.yml

config.yml

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                dbname: "%database_name%"
                user: "%database_user%"
                password: "%database_password%"
                host: "%database_host%"
                driver:   pdo_mysql
                charset:  utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci
            connection2:
                dbname: "%database_name2%"
                user: "%database_user2%"
                password: "%database_password2%"
                host: "%database_host2%"
                driver:  pdo_sqlsrv
                #driver:  sqlsrv  i've also tried this
                #charset:  utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci

有人知道我为什么会收到这些错误吗?

2 个答案:

答案 0 :(得分:3)

如果找不到sqlsrv_configure函数,则不会安装sqlsrv扩展名。它可以在官方Microsoft存储库here中找到。

您可以通过在终端中运行命令php -m来检查是否已安装扩展程序。请注意,如果您在独立服务器上运行Symfony(例如MAMP,XAMP或其他使用非CLI版本的PHP),那么CLI和独立服务器使用的扩展可能会有所不同。

您可以通过转到Symfony中的探查器(默认情况下为/_profiler)并单击"查看完整的PHP配置"来测试此问题。 Configuration菜单项下的链接。这将打开phpinfo()屏幕。在那里寻找sqlsrvpdo_sqlsrv个扩展名。

修改

再次查看Doctrine docs,似乎pdo_sqlsrv会导致问题。 Doctrine建议使用sqlsrv

  

pdo_sqlsrv:使用pdo_sqlsrv PDO 的Microsoft SQL Server驱动程序请注意,此驱动程序在我们的测试中导致了问题。如果可能,请更喜欢sqlsrv驱动程序。

(强调不是我的)

答案 1 :(得分:0)

你可以尝试:

driver:        pdo_sqlsrv
database_port: 1433

不确定这是否有效,但请尝试一下。