Laravel配置ODBC驱动程序

问题描述:

我需要配置Laravel 4使用ODBC驱动程序PDO为SQL Server 2000Laravel配置ODBC驱动程序

我在一个普通的PHP文件测试,它完美的作品,但是,我不能得到正确的Laravel内部的配置。

这是我的连接字符串>

$conn = new PDO("odbc:Driver={SQL Server};Server=MyHOST;Database=myDb;User Id=sa;Password=;"); 

我得到这个至今在Laravel的config/database.php中

编辑

好了,我也跟着从https://github.com/ccovey/odbc-driver的指示,我配置:

我将它改为

'odbc' => array(
     'driver' => 'odbc', 
     'dsn' => 'Driver={SQL Server};Server=MyServer', 
     'grammar' => 'SqlServerGrammar', 
     'username' => 'user', 
     'password' => 'pass', 
     'database' => 'staPPM', 
    ), 

即时得到一个错误FatalErrorException,语法未找到

Laravel 4仍然不直接支持ODBC,你必须做你自己或者你可以尝试使用这个驱动程序:https://github.com/ccovey/odbc-driver

你必须添加连接这应该是这个样子:

'odbc' => array(
    'driver' => 'odbc', 
    'dsn' => 'Driver={iSeries Access ODBC Driver};System=my_system_name;', 
    'grammar' => 'DB2', 
    'username' => 'foo', 
    'password' => 'bar', 
    'database' => '', 
    'grammar' => 'SqlServerGrammar', 
), 

正如包文档指出,你必须提供一个有效的DSN连接到您的服务器:那些部分是例子有效的连接字符串:

"Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;" 

"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=Yes" 

"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\Northwind.mdb" 

"Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls" 

"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin" 

要知道,如果你的DSN是有效的,你最好测试Laravel外的DNS。

如果您有可以访问的Linux,你可以通过做测试:

apt-get install unixodbc 

isql -v DSN_NAME db_username db_password 

它应该回答有:

+---------------------------------------+ 
| Connected!       | 
|          | 
| sql-statement       | 
| help [tablename]      | 
| quit         | 
|          | 
+---------------------------------------+ 
SQL> 

有一个在ccovey的源代码中的bug,并且现在,你应该改变的ODBCDriverConnection到源:

/** 
* Default grammar for specified Schema 
* @return Schema\Grammars\Grammar 
*/ 
protected function getDefaultSchemaGrammar() 
{ 
    return $this->withTablePrefix(new \Illuminate\Database\Schema\SqlServerGrammar); 
} 

我将在包打开的问题年龄Github所以他们得到这个固定的。

+0

我得到错误SQLSTATE [IM002]未找到数据源名称,也没有指定默认驱动程序 –

+0

您是在谈论https://github.com/ccovey/odbc-driver?你是如何安装它的? –

+0

我遵循每一条指令,添加require到composer.json,我运行作曲家更新,控制台说安装ccovey/odbc-driver-l4,然后我配置为我上面说过,我得到了那个错误 –