Laravel 5.7无法连接到Windows上的SQLSRV数据库(找不到驱动程序)

时间:2018-12-16 03:36:12

标签: sql-server database laravel

我的环境文件

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

我已经用以下原始php测试过,它已成功连接并返回“ connected”字符串。

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 migration 进行迁移时,它会返回QueryExeption

  

找不到驱动程序(SQL:从type ='U'的sysobjects中选择*   和名称=迁移)

异常跟踪:

  

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

php.ini extensions

4 个答案:

答案 0 :(得分:1)

我通过添加扩展名解决了该问题:

ClusterIP

同时访问 php7.1.22 文件夹中的extension=php_pdo_sqlsrv_71_ts_x64.dll extension=php_sqlsrv_71_ts_x64.dll apache 文件夹中的php.ini

谢谢。

答案 1 :(得分:0)

有时无法在Xampp中使用Git Bash运行迁移。就我而言,请使用Laragon终端,也可以尝试Windows终端。

答案 2 :(得分:0)

此链接帮助我正确安装:

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();

答案 3 :(得分:-2)

当前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

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

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

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