Php LAVEL到SQL Server(sqlsrv)。[PDOException]找不到驱动程序
介绍。我的laravel应用程序使用的是mysql,现在它需要托管在我工作的公司的网络中(我是一名远程工作者)。这家公司是微软的peeps,所以我需要将laravel集成到他们的SQL Server中 我的环境里有这个Php LAVEL到SQL Server(sqlsrv)。[PDOException]找不到驱动程序,php,sql-server,laravel,pdo,odbc,Php,Sql Server,Laravel,Pdo,Odbc,介绍。我的laravel应用程序使用的是mysql,现在它需要托管在我工作的公司的网络中(我是一名远程工作者)。这家公司是微软的peeps,所以我需要将laravel集成到他们的SQL Server中 我的环境里有这个 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 arti
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迁移后
错误:
[PDOException]
could not find driver
我正在使用Ubuntu,一个专用于我的远程设备(来自我的雇主)。我曾经尝试过在我的laravel应用程序中使用sql server(使用我的Windows PC)。就我所记得的,我在xampp php.ini中编辑了一些文本。作为Linux新手,这对我来说太难了(因为我只使用CLI)
已编辑(新版本)
所以我已经获得了从Ubuntu到数据库服务器的连接。我使用了sqlcmd-S-U
我测试了这些查询(比如SELECT*fromsusers\u 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的名称。也有
找不到驱动程序的错误,在安装以下软件包后解决了问题:
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' => '',
],
为那些后来的人
确保您使用的PHP版本(对于我来说,homestead目前使用php7.1,所以我安装了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' => '',
]
您可以使用tsql确保连接信息是正确的
TDSVER=8.0 tsql -H Host -U Username -D DatabaseName -p 1433 -P Password
安装sybase时,请确保它与VM使用的版本匹配
跑
然后安装正确的sybase版本:
sudo apt-get install freetds-common freetds-bin unixodbc php7.#-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
在尝试运行这些命令之前,请始终运行sudo apt get upgrade
谢谢,这些答案帮助很大。请让我解释一下我使用laravel/homestead vagrant box版本7.1.0和PHP7.3做了什么
我在我的流浪家园虚拟盒中运行了命令sudo apt get install freetds common freetds bin unixodbc php7.3-sybase
这个命令两次提示我要么保留本地php.ini配置文件,要么使用“安装程序版本”。我两次都选择使用安装程序的版本,一切都很好。另外,我设置了default=>env('DB_CONNECTION','sqlsrv')
这可能会给你一些线索,甚至可能是重复的,我一直在遵循这一点,但它使用MSSQL而不是sqlsrv。我找不到/usr/local/etc/odbcinst.ini对我来说,odbcinst.ini在/etc/odbcinst.ini中,我不知道您是否找到了解决方案,但我遇到了与您相同的问题。我可以用命令行很好地连接到我的数据库,但是php没有看到驱动程序。你能解决这个问题吗?在windows 10中如何解决这个问题?@KeVin,你找到解决方案了吗?我在windows中也有同样的问题。对于php7.2,我将其替换为php7.2-sybase
[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
client charset = UTF-8