2016-10-04 61 views
10

簡介。我的laravel應用程序使用的是mysql,現在它需要託管在我工作的公司的網絡中(我是一名遠程工作人員)。而這家公司是微軟的窺視,所以我需要將laravel整合到他們的SQL Server中。Laravel到SQL Server(sqlsrv)。 [PDOException]找不到驅動程序

我有這個在我的.ENV

DB_CONNECTION=sqlsrv 
DB_HOST=ip.address.of.server 
DB_PORT=3306 
DB_DATABASE=my_db 
DB_USERNAME=my_username 
DB_PASSWORD=my_password 

使用php artisan migrate

錯誤後:

[PDOException] 
    could not find driver 

我使用Ubuntu,遙控盒專用於我(從我的僱主)。我曾嘗試在我的laravel應用程序中使用sql server(使用我的Windows PC)。據我所知,我在xampp php.ini中編輯了一些文本。作爲新手Linux用戶,對我來說太難了(因爲我只使用CLI)。

編輯(新版本)

所以我已經得到了Ubuntu的連接切換至數據庫服務器。我使用了sqlcmd -S <host> -U <username>

和我測試了查詢(如SELECT * from users_data),它的工作原理。

現在,我修改了config/database.php,我添加了這個。

'sqlsrv' => [ 
       'driver' => 'MSSQL', 
       'host'  => env('DB_HOST', 'host.of.the.database'), 
       'database' => env('DB_DATABASE', 'my_database'), 
       'username' => env('DB_USERNAME', 'my_username'), 
       'password' => env('DB_PASSWORD', 'my_pass'), 
      'port'  => '1433', 
       'prefix' => '', 
      ], 

,但我得到了一個錯誤:

[InvalidArgumentException] 
    Unsupported driver [MSSQL] 

「MSSQL」 是我用它來配置freetds的名稱。

+1

這可能給你一些線索HTTP://www.easysoft .com/products/data_access/odbc-sql-server-driver/getting-started.html – RiggsFolly

+0

這可能甚至是重複http://stackoverflow.com/questions/149395/what-are-some-ways-of- access-microsoft-sql-server-from-linux – RiggsFolly

+0

我一直在關注這個http://askubuntu.com/questions/578934/mssql-connection-from-ubuntu,但它使用MSSQL而不是sqlsrv。我找不到/usr/local/etc/odbcinst.ini –

回答

1

也有could not find driver錯誤,安裝下面的包後解決了這個問題:

sudo apt-get install freetds-common freetds-bin unixodbc php5-sybase 

但是我現在用的是sqlsrv驅動程序,這是我config/database.php

'sqlsrv' => [ 
     'driver' => 'sqlsrv', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => env('DB_DATABASE', 'forge'), 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'prefix' => '', 
    ], 
7

對於那些

後誰進來

確保你使用的PHP版本(對於我目前使用PHP 7.1的宅基地,所以我安裝了php7.1-syba SE)

sudo apt-get install freetds-common freetds-bin unixodbc php7.1-sybase 

和司機是

'sqlsrv' => [ 
      'driver' => 'sqlsrv', 
      'host' => env('DB_HOST', 'localhost'), 
      'database' => env('DB_DATABASE', 'forge'), 
      'port' => env('DB_PORT', '1433'), 
      'username' => env('DB_USERNAME', 'forge'), 
      'password' => env('DB_PASSWORD', ''), 
      'charset' => 'utf8', 
      'prefix' => '', 
     ] 

可以確保連接信息使用T-SQL

TDSVER=8.0 tsql -H Host -U Username -D DatabaseName -p 1433 -P Password 
+0

如何在Windows 10中做到這一點? –

0

當安裝Sybase是正確的,保證它與相匹配您的VM使用的版本。

運行

php --version 

,然後安裝正確的Sybase版本:

如果您收到編碼錯誤,你需要更新你的freedts和php.ini配置,以及。更改/etc/freetds/freetds.conf,這樣它看起來像:

[global] 
     # TDS protocol version 
     tds version = 8.0 

     # Whether to write a TDSDUMP file for diagnostic purposes 
     # (setting this to /tmp is insecure on a multi-user system) 
;  dump file = /tmp/freetds.log 
;  debug flags = 0xffff 

     # Command and connection timeouts 
;  timeout = 10 
;  connect timeout = 10 

     # If you get out-of-memory errors, it may mean that your client 
     # is trying to allocate a huge buffer for a TEXT field. 
     # Try setting 'text size' to a more reasonable limit 
     text size = 64512 
     client charset = UTF-8 

# A typical Sybase server 
[egServer50] 
     host = symachine.domain.com 
     port = 5000 
     tds version = 5.0 

# A typical Microsoft server 
[egServer70] 
     host = ntmachine.domain.com 
     port = 1433 
     tds version = 7.0 

[mssql] 
     host = 
     Port = 1433 
     tds version = 8.0 

添加到您的php.ini:

client charset = UTF-8 
相關問題