PHP PDO ODB C ПОДКЛЮЧИТЬ К ПЕРВАЗИВНОЙ БАЗЕ ДАННЫХ - PullRequest
0 голосов
/ 05 февраля 2020

Все 32Bit. Windows 2018 Сервер. PV SQL v10 (я не могу обновить это)

PHP 5.3.28 (я мог бы обновить это до 5.6.x) 7.x Слишком много сломалось бы

Я пробовал везде искать пример подключения PHP к Pervasive DB с помощью PDO. Мне удалось подключиться, используя следующий не PDO-соединитель:

$conn = odbc_connect("demodata","","");
if(!$conn) die("Could not connect");

Глядя на примеры из https://docs.actian.com/psql/psqlv13/index.html#page / odbc% 2Fodbcadm.htm% 23ww1213912 Я обнаружил, что должен быть используя что-то вроде:

    try {
        $conn = new PDO("odbc:Driver={Pervasive ODBC Client Interface};ServerDSN=demodata;");
        if(!$conn) die("Could not connect");
    }
    catch (PDOException $e) {
      echo $e->getMessage();
      exit;
    }

Я также попытался:

        $conn = new PDO("odbc:Driver={Pervasive ODBC Client Interface};ServerName=localhost;SeverDSN=demodata;");
        $conn = new PDO("odbc:Driver={Pervasive ODBC Client Interface};ServerName=localhost;SeverDSN=DEMODATA;");

Когда я это сделаю. Я получаю сообщение об ошибке:

SQLSTATE [HY000] SQLDriverConnect: -1206 [распространяющийся] [ODB C интерфейс клиента] [LNA] [распространяющийся] [ODB C интерфейс механизма] [запись данных Менеджер] Файл без базы данных или поврежденный файл базы данных.

Но я знаю, что он не поврежден. Я могу подключиться и выполнить запросы другим способом. Просто очень хотелось бы иметь возможность использовать PDO. Когда я делаю тест из Pervasive ODB C Client DSN Setup. Я получаю соединение успешно.

Чего мне не хватает?

1 Ответ

0 голосов
/ 06 февраля 2020

Спасибо @Mitheil за то, что указал мне правильное направление. Имя сервера действительно необходимо даже на локальной машине. Таким образом, необходимая строка: "odb c: Driver = {Pervasive ODB C Клиентский интерфейс}; ServerName = db; ServerDSN = demodata;"

    try {
        $conn = new PDO("odbc:Driver={Pervasive ODBC Client Interface};ServerName=db;ServerDSN=demodata;");
        if(!$conn) die("Could not connect");
    }
    catch (PDOException $e) {
      echo $e->getMessage();
      exit;
    }
...