全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2079
推到 Plurk!
推到 Facebook!

如何解決Table is full的問題?

尚未結案
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-01 11:17:32 IP:218.16.xxx.xxx 未訂閱
大家好!    我有一個Paradox的資料表.在該.DB檔案大小為128m的時候,就不能再新增資料了(會提示Table is Full) 我有參考如下連結: 【問題】EDBEngineError : table is full  http://delphi.ktop.com.tw/topic.php?topic_id=25325 還是沒能解決我的問題。 我將BDE中的Configuration 頁 -> Native -> Paradox 將 BLOCK SIZE 項的值加大問題還是存在. 請問還有哪些地方需注意嗎?謝謝!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-01 12:35:57 IP:203.204.xxx.xxx 未訂閱
引言: 大家好! 我有一個Paradox的資料表.在該.DB檔案大小為128m的時候,就不能再新增資料了(會提示Table is Full) 我有參考如下連結: 【問題】EDBEngineError : table is full http://delphi.ktop.com.tw/topic.php?topic_id=25325 還是沒能解決我的問題。 我將BDE中的Configuration 頁 -> Native -> Paradox 將 BLOCK SIZE 項的值加大問題還是存在. 請問還有哪些地方需注意嗎?謝謝!
上面的討論我也有參與過, 1.換成DBF可解決 2.如果不可能換, 試著重整DB檔, 使其縮小可在撐一陣子 3.本身DB就有容量限制, 但如何取決沒人知道, 因為依BORLAND的官方文件來看, DB是可以幾乎無限的, 但我曾試過6個欄位只能到 999999筆就掛了 4.可能無解! GOOD LUCK~~~
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-01 14:14:20 IP:218.16.xxx.xxx 未訂閱
感謝P.D.大大的熱心回復! 1. DB不能更改DBF 2. 我用的剛好也是6個欄位(1個Data,2個Time,2個Number,1個Char) 3. 不過記錄有:4585054筆 4. 真的沒辦法解決嗎?忘記在哪裡看到Help說DB最大可以支援到2G容量嘛 又發現一個問題 在
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-01 18:54:32 IP:61.71.xxx.xxx 未訂閱
引言: 感謝P.D.大大的熱心回復! 1. DB不能更改DBF 我想也是 2. 我用的剛好也是6個欄位(1個Data,2個Time,2個Number,1個Char) 3. 不過記錄有:4585054筆 這個前面我提過, 如何判定full, 我實在查不到官方說法 4. 真的沒辦法解決嗎?忘記在哪裡看到Help說DB最大可以支援到2G容量嘛 <> 記載上這是一個理想值, 但最高記錄我只有到> 又發現一個問題 在> 請先對 > 另外我用:> 不明白你的意思? < face="Verdana, Arial, Helvetica">
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-02 08:55:31 IP:61.142.xxx.xxx 未訂閱
引言: 又發現一個問題 在Sql Explorer下Sql語句: select count(*) from table1顯示COUNT(*)為:215084 可是用DataBase DeskTop裡面打開,記錄為:4585054 請先對 db檔進行重整(pack)後再比對看看!~ 您好!我對db檔進行pack之後,記錄就變為215084,並且檔案大小縮小為6M而已,為什麼pack之後就變成這樣了呢?可否請問Pack有什麼作用以及在程式中如何用代碼執行pack動作?(我在想是不是我在程式中刪除資料的時候:delete from table where... 其實沒有真正的刪除?) 真的麻煩你了.謝謝! 另外我用:select * from table1 還是只能顯示部份資料,如果不查詢,直接點Data頁次 可以顯示完整資料,請問這是什麼原因呢?還是說Sql Explorer查詢有限制,不能 查詢顯示太多資料? 不明白你的意思? 如下圖: 不過對DB進行PACK後這個問題不存在了.因為記錄都為215084
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-02 16:35:56 IP:61.71.xxx.xxx 未訂閱
您好!我對db檔進行pack之後,記錄就變為215084,並且檔案大小縮小為6M而已,為什麼pack之後就變成這樣了呢?可否請問Pack有什麼作用以及在程式中如何用代碼執行pack動作?(我在想是不是我在程式中刪除資料的時候:delete from table where... 其實沒有真正的刪除?) 真的麻煩你了.謝謝! 資料庫的建構其實仍然是依循式的建立, 每一筆都建構在最後一筆的下面, 當你刪除當中的一筆時, 其實記錄是還在的, 只是記錄內存的指標已將該筆如壞軌般給mark起來(這得視每一種資料庫的做法, 我談的只是通論), 所以一直新增就會一直長大, 而pack就是在處理這些事件, 將內存已無效的標記位置給清出來, 而由下一筆遞補而上, 如此依類推理, 當然你的檔案自然就縮小, 然而query是沒有記錄指標的基礎, 所以你計算筆數時會以實際存在的記錄為主, 而bde是以table為基礎, 會含括被刪除的記錄, 在db結構上被delete就實際被刪除了, 只是位置還在, 如果是dbf, 則刪除是屬於soft delete, 仍然有機會可以取回的 在Delphi中並沒有將pack給封包成元件或函數, 你必須利用Delphi的原生函數來做, 我記得在站上有資料, 可利用pack或重整搜尋 另外我用:select * from table1 還是只能顯示部份資料,如果不查詢,直接點Data頁次 可以顯示完整資料,請問這是什麼原因呢?還是說Sql Explorer查詢有限制,不能 查詢顯示太多資料? 不過對DB進行PACK後這個問題不存在了.因為記錄都為215084 我很少用sql explorer作業, 不是很清楚, 不過因為你經過pack後的筆數差異超過一半的數, 我想有可能是這部份在干擾
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-02 17:06:39 IP:218.16.xxx.xxx 未訂閱
P.D.大大,您好! 非常感謝你這麼詳細的解答。 我有按你的建議搜尋到有關的文章。 也大概對Paradox的資料庫有一些了解,謝謝!
系統時間:2024-11-23 9:35:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!