2010-04-27 41 views
1

我在MS Access 2003中創建了一個MySQL表的鏈接表。我使用了我在MySQL網站上找到的mysql-connector-odbc-5.1.6-win32驅動程序。當我查看錶格時,我只能在VARCHAR(255)字段中看到70個字符。有沒有人使用MS Access的MySQL?從MS Access連接時截斷的MySQL字段

+0

我已經使用MySQL 4.x.我遇到過的唯一問題是具有全文索引的表,而Access似乎並不喜歡。 – 2010-04-28 00:32:41

回答

0

嗯,這很尷尬。我查看的表中有一列是較長列的截斷版本,而我正在看那一列。

+0

糟糕!當那種事情發生時,我討厭它! :) – 2011-06-09 01:58:15

0

只是一個猜測,我不知道,如果是70一個確切的數字,但:

255/4 = 63.75 (so 63)因此,這意味着一個255字節的限制將只允許63 4字節字符。

我不確定在MySQL <上的某個地方 - >訪問它會讓編碼變得很奇怪。

如果您的表使用的是較大的字符串編碼,那麼可能是限制了字符數?

我也可能是完全錯誤的。

0

從我從MS Access中使用MySQL表已經有一段時間了,但從我記憶中,我不認爲Access在鏈接表時直接使用MySQL的字段定義。我不記得這是用於表格還是傳遞查詢,但我記得有時似乎Access基於它下載的前幾行中包含的數據的字段定義。

可能有一個可選參數,您可以在連接字符串中指定以幫助設置正確的字段定義。查看www.connectionstrings.com或MySQL網站獲取更多信息。

我實際上逃避了在Access中連接MySQL表,因爲連接兩個表的查詢的性能非常糟糕。然而,我確實使用了傳遞查詢,並取得了很大的成功。當使用傳遞查詢時,查詢的工作由MySQL引擎完成,而不是訪問JET引擎,這通常會導致更好的性能,因爲只有最終數據傳遞給客戶端。但是,當您使用傳遞查詢時,您在Access中失去了查詢編輯的所見即所得功能。

一個複雜的解決方案,我會使用涉及使用傳遞查詢來自動創建一個表,我可以定期手動更新。我將不得不在設置期間手動調整表格定義(因爲查詢沒有下拉字段定義),但是一旦我調整了表格,我就可以用MySQL數據以編程方式更新表格。當我不得不在Access中做很多複雜的事情時,我使用了這種技術,並且正在消耗大量的數據。

+0

如果ODBC驅動程序爲它提供足夠的元數據,則Jet將做出正確的決定並將大多數數據請求發送到服務器。我將這種問題歸咎於ODBC驅動程序,因爲通過ODBC訪問SQL Server的效率非常高,幾乎不會爲服務器上可以處理的查詢提取所有數據。 – 2010-04-29 01:11:06

+0

感謝Ben。 我想我會嘗試傳遞查詢。我必須在所有客戶機上安裝ODBC驅動程序嗎?我可以做到這一點,而不必爲每臺機器創建一個DSN? – Paul 2010-04-29 01:50:15

+0

我可以通過運行下面的代碼來實現鏈接表DSN-less:http://www.accessmvp.com/djsteele/DSNLessLinks。html 仍然沒有想出截斷字段的問題 – Paul 2010-04-29 06:17:20