【问题标题】:Laravel Config ODBC DriverLaravel 配置 ODBC 驱动程序
【发布时间】:2014-05-04 20:08:46
【问题描述】:

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

我已经在一个普通的 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,未找到语法

【问题讨论】:

    标签: sql-server laravel laravel-4 odbc


    【解决方案1】:

    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 的源代码中有一个错误,现在,您应该将ODBCDriverConnection 的源代码更改为:

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

    我将在 Github 包中打开一个问题,以便他们修复此问题。

    【讨论】:

    • 我收到错误 SQLSTATE[IM002] 数据源名称未找到且未指定默认驱动程序
    • 你说的是github.com/ccovey/odbc-driver吗?你是怎么安装的?
    • 我按照每条指令,将要求添加到 composer.json 并运行 composer update,控制台说安装 ccovey/odbc-driver-l4 然后我按照上面所说的进行配置,我得到了那个错误
    • 我认为现在的问题是我不知道 config/database.php 的确切配置
    • 我添加了 'dsn' => 'Driver={SQL Server}',现在出现错误:既没有提供 DSN 也没有提供服务器关键字
    猜你喜欢
    • 2016-01-06
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多