Подтвердить что ты не робот

Имя источника данных не найдено, и указанный драйвер по умолчанию не указан

Мне нужна помощь в исправлении ошибки: SQL state IM014 in SQLConnect и SQL state IM002 in SQLConnect.

Я запускаю тот же script, один на webserver/remote/, а другой из локальной машины пытается получить доступ к той же базе данных, но я получаю другое сообщение об ошибке.

Когда я запускаю его с веб-сервера, я получаю

Ошибка SQL: [unixODBC] [Диспетчер драйверов] Имя источника данных не найдено, и указанный драйвер по умолчанию не указан, состояние SQL IM002 в SQL

где, когда я запускаю его на локальном компьютере, я получаю

[Microsoft] [Менеджер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между Драйвером и Приложением

Я использовал следующий код в php script для подключения к локальной базе данных

$odbc['dsn'] = "SageLine50v19";
$odbc['user'] = "Peac";
$odbc['pass'] = "XXXX";
$mysql['host'] = "localhost";
$mysql['user'] = "root";
$mysql['pass'] = "";
$mysql['dbname'] = "sagetest";
$mysql['idfield'] = "id";


// Step 1: Connect to the source ODBC database
if ($debug) echo "Connect to " . $odbc['dsn'] . ' as ' . $odbc['user'] . "\n";
$conn = odbc_connect($odbc['dsn'], $odbc['user'], $odbc['pass']);
if (!$conn) {
die("Error connecting to the ODBC database: " . odbc_errormsg());
}

// loop through each table 
$allTables = odbc_tables($conn);
$tablesArray = array();
while (odbc_fetch_row($allTables)) {
 if (odbc_result($allTables, "TABLE_TYPE") == "TABLE") {
    $tablesArray[] = odbc_result($allTables, "TABLE_NAME");
 }
}
 //print_r($tablesArray);      // to list all tables

Мой ODBC.ini выглядит ниже

[ODBC 32 bit Data Sources]
manager=Sage Line 50 v16 (32 bit)
t=SQL Server Native Client 10.0 (32 bit)
s1=Pervasive ODBC Client Interface (32 bit)
SageLine50v19=Pervasive ODBC Client Interface (32 bit)
[manager]
Driver32=C:\Windows\SysWOW64\S16DBC32.dll
[t]
Driver32=C:\Windows\system32\sqlncli10.dll
[s1]
Driver32=C:\Program Files (x86)\Pervasive Software\PSQL\bin\w3odbcci.dll
[SageLine50v19]
Driver32=C:\Program Files (x86)\Pervasive Software\PSQL\bin\w3odbcci.dll
4b9b3361

Ответ 1

Очень просто!

На сервере:

Ошибка SQL: [unixODBC] [Диспетчер драйверов] Имя источника данных не найдено, и указанный драйвер по умолчанию не указан, состояние SQL IM002 в SQL

Удалить имя источника данных USER и определить его как имя источника данных SYSTEM. Перейдите в → Пуск → Настройки → Панель управления → Администрирование →  Источники данных (ODBC):  - Пользовательский DSN: удалить указанный DSN пользователя  - Системный DSN: создать новый системный DSN

Попробуйте установить ту же 32-битную или 64-битную версию, что и локально.

Локально:

[Microsoft] [Менеджер драйверов ODBC] Указанный DSN содержит несоответствие архитектуры между Драйвером и Приложением

32-битный/64-битный конфликт - либо вы устанавливаете 32-битную версию драйвера, либо используете/настраиваете 32-разрядную версию под C:\Windows\SysWoW64\

Попробуйте установить ту же версию 32bits или 64bits, что и локально.

Ответ 2

Есть несколько вещей, которые могут вызвать это. Во-первых, DSN должен быть объявлен на обеих машинах, на удаленной машине он должен быть WAN или LAN-адресом в зависимости от того, где он живет в сети. Во-вторых, вам нужно убедиться, что у вас есть правильный драйвер ODBC, есть 32-битные драйверы и 64-битные драйверы. Соединитель MySQL поставляется с обоими.

32 bit ODBC: %systemdrive%\Windows\SysWoW64\odbcad32.exe
64 bit ODBC: %systemdrive%\Windows\system32\odbcad32.exe

Я бы попытался удалить 64-битный драйвер, добавив 32-битный драйвер и посмотрев, как это происходит. Кроме того, убедитесь, что вы проверили свой ODBC, чтобы убедиться, что у вас есть соединение. Если вы после этого времени проверяете кодировку.

Ответ 3

Сначала откройте параметр административных инструментов. Проверьте свою операционную систему. Если вы используете 64-битный, тогда выберите драйвер 64-битного. Или это 32-бит, а затем выберите 32-битный.

Пожалуйста, не делайте никаких пользователей DSN. Выберите системный DSN.

например. Я создал System DSN, имя которого "empcon1", а затем в PHP-коде, вы должны написать вот так:

$dbNewName = "empcon1"; <br/>
$dbUserName = "yash"; <br/>
$dbPassword = "yash";<br/>
$conn=odbc_connect($dbNewName,$dbUserName,$dbPassword);

thats all.. Вы подключитесь.