我需要幫助修復錯誤:SQL state IM014 in SQLConnect
和SQL state IM002 in SQLConnect
。找不到數據源名稱,也沒有指定默認驅動程序
我運行相同的腳本,一個在webserver/remote/
上,另一個從本地機器嘗試訪問同一個數據庫,但我得到了不同的錯誤信息。
當我從網絡服務器上運行它,我得到
SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQL
哪裏,當我在本地機器上運行它,我得到
[Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
我用PHP腳本下面的代碼連接到本地數據庫
$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.in我看起來像下面
[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
DSN體系結構不匹配是因爲應用程序的位數和驅動程序的位數不同,所以您試圖在64位應用程序中使用32位驅動程序,反之亦然。你需要匹配它們才能正常工作。在您的本地機器上,如果您正在使用32位驅動程序切換到64位驅動器並重試。在服務器上,您是否安裝了驅動程序和DSN? – KylePorter 2014-10-16 16:40:28
@KylePorter謝謝你的回覆我不知道DSN,但我知道我的網絡主機添加了「odbc」擴展名。我將向他們詢問有關DSN的信息 – Keven 2014-10-16 17:32:54
僅安裝ODBC驅動程序是不夠的,您還必須在服務器上創建一個要連接的DSN,與本地計算機上的相同。如果您正在部署相同的代碼,那麼您必須確保DSN的設置與本地的相同。 – KylePorter 2014-10-17 18:01:58