CakePHP и подключение к MS Access db с помощью Unixodbc - PullRequest
0 голосов
/ 13 ноября 2009

Я пытаюсь использовать базу данных Acces (MDB) из приложения CakePHP. На Windows-машине это работает нормально. На Linux-машине, использующей Unixodbc, это не работает вообще. Ошибка выглядит следующим образом:

Предупреждение (2): odbc_connect () [function.odbc-connect]: ошибка SQL: [unixODBC] [Driver anager] Имя источника данных не найдено и драйвер по умолчанию не указан, состояние SQL IM002 в SQLConnect [APP / vendors /adodb/drivers/adodb-odbc.inc.php, строка 60]

Определение источника данных CakePHP:

             $default = array(
                            'driver' => 'adodb',
                            'connect'  => 'access',
                            'host' => "Driver=[MDBODBC]; Dbq=".$filePath.";Uid=Admin;Pwd=;}",
                            'login'    => 'Admin',
                            'password' => '',
                            'database' => ''
                    );

Что не так с этой конфигурацией?

1 Ответ

2 голосов
/ 13 ноября 2009

Элемент 'host' в целом выглядит странно из-за своей непревзойденной закрывающей скобки.

Как строка 60 (из сообщения об ошибке) выглядит в dodb-odbc.inc.php? Какие элементы массива конфигурации он использует для вызова odbc_connect? Сравните вызов с примерами для документации odbc_connect.

Вы пытались подключиться, используя odbc_connect напрямую?

Кроме того, моя версия торта имеет драйвер ODBC DBO, фактически в рамках торта, на

cake/libs/model/dbo/dbo_odbc.php

Используется odbc_pconnect. Там строка $dsn, которая является первым аргументом для odbc_pconnect, поступает из элемента 'database' массива config, а не из элемента 'host'.

Я не знаю, почему вы бы использовали стороннее решение в

app/vendors/adodb/drivers/adodb-odbc.inc.php

особенно с тех пор, как Библиотека дат в библиотеке John Lim ADOdb для PHP позволяет удаленным злоумышленникам получать конфиденциальную информацию .

...