【问题标题】:Laravel 5.7 can not connect to SQLSRV Database on Windows (could not find driver)Laravel 5.7 无法连接到 Windows 上的 SQLSRV 数据库(找不到驱动程序)
【发布时间】:2019-05-16 21:00:35
【问题描述】:

我的环境文件

DB_CONNECTION=sqlsrv
DB_HOST=DESKTOP-ATB1EFG
DB_DATABASE=frontdesk
DB_USERNAME=sa
DB_PASSWORD=something_secret123
DB_PORT=1433

我已经用原始 php 进行了如下测试,它已成功连接并返回“已连接”字符串。

serverName = "DESKTOP-ATB1EFG";
    $connectionOptions = array(
        "Database" => "frontdesk",
        "Uid" => "sa",
        "PWD" => "something_secret123"
    );
    //Establishes the connection
    $conn = sqlsrv_connect($serverName, $connectionOptions);
    if($conn){
        echo "Connected!";

    }else{
        echo "Failed";
    }

但是,当我尝试使用 php artisan migrate 进行迁移时,它返回 QueryExeption

找不到驱动程序 (SQL: select * from sysobjects where type = 'U' 和名称 = 迁移)

异常跟踪:

1 PDOException::("找不到驱动程序")

C:\wamp64\www\frontdesk.sys\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70

2
PDO::__construct("dblib:host=DESKTOP-ATB1EFG:1433;dbname=frontdesk;charset=utf8", “sa”,“something_secret123”,[]) C:\wamp64\www\frontdesk.sys\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70

我已经检查了 php 7.2.10,它已经启用了扩展

extension=php_sqlsrv_72_nts_x64.dll
extension=php_pdo_sqlsrv_72_nts_x64.dll
extension=php_sqlsrv_72_ts_x64.dll
extension=php_pdo_sqlsrv_72_ts_x64.dll

【问题讨论】:

  • 您不应该使用ts线程安全)和nts非线程安全)版本的sqlsrv扩展同时。另外,您是否确保在 CLI 的 php.ini 以及网络服务器(php-fpm 或其他)中都启用了扩展?
  • 感谢您的评论,现在它正在工作。我需要添加到 php 文件夹中的 php.ini 和 apache 文件夹中的 php.ini 。谢谢。

标签: php sql-server database laravel


【解决方案1】:

我通过添加扩展解决了这个问题:

extension=php_pdo_sqlsrv_71_ts_x64.dll
extension=php_sqlsrv_71_ts_x64.dll

php7.1.22 文件夹中的 php.iniapache 文件夹中的 php.ini

谢谢。

【讨论】:

    【解决方案2】:

    有时在 Xampp 中使用 Git Bash 运行迁移不起作用。在我的情况下,使用 Laragon 终端,或者您可以尝试 Windows 终端。

    【讨论】:

      【解决方案3】:

      此链接帮助我正确安装:

      https://www.danhendricks.com/2017/11/installing-microsoft-sql-server-php-extensions-plesk-onyx/

      我什至不需要进行 3. 步。您需要安装 Microsoft ODBC Driver for SQL Server 和 Microsoft Drivers for PHP for SQL Server。

      然后您可以通过 Tinker 检查连接。请确保您在两种环境中都使用 sam PHP 版本。

      php artisan tinker
      DB::connection('your_sqlsrv_connection_name')->getPdo();
      

      【讨论】:

        【解决方案4】:

        目前 laravel 支持

        MySQL
        PostgreSQL
        SQLite
        SQL Server
        

        如果您使用其中任何一种,请按照提示操作

        打开你的 .env 文件,你会发现一堆变量

        你会发现这些

        DB_CONNECTION=mysql
        DB_HOST=127.0.0.1
        DB_PORT=3306
        DB_DATABASE=homestead
        DB_USERNAME=homestead
        DB_PASSWORD=secret
        

        例如: 只需将DB_CONNECTION 更改为您当前的数据库,例如SQLite

        并填写您的凭据和用户名,数据库名称

        在此处查看支持的数据库 https://laravel.com/docs/5.7/database#introduction

        【讨论】:

        • 是的,我已经更改了我的 env 文件,如下所示。 DB_CONNECTION=sqlsrv DB_HOST=DESKTOP-ATB1EFG DB_DATABASE=前台 DB_USERNAME=sa DB_PASSWORD=@@itmall.com.kh078 DB_PORT=1433
        猜你喜欢
        • 1970-01-01
        • 2016-09-11
        • 2018-08-26
        • 1970-01-01
        • 2017-02-13
        • 1970-01-01
        • 2017-07-27
        • 2015-02-23
        • 2017-09-15
        相关资源
        最近更新 更多