Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Pascal
Expertise: Beginner
May 9, 1997

Paradox "Table is Full" error

Question:
My Paradox table has grown to about 130 MB. Now whenever I try to insert a new record to the table (from code or Database desktop), I get a "Table is Full" error.

I looked at Borland's Web site, and it says Paradox limits are two billion records or bytes per table. So why this problem (my table record count is about 1.7 milion)?

Answer:
The problem's not with Delphi, but with the BDE and your table.

Yes, Paradox tables conceivablycan be up to 2 GB (though I've had nothing but problems with large tables in Paradox). But there's a trick to it. You have to set up the right block size in the BDE. Here's a quick table of the table sizes you should be able to achieve with the associated block size:

Block Size (K)Table Size
1K64MB
2K128MB
4K256MB
8K512MB
16K1GB
32K2GB

To set the block sizes in the BDE, do the following:

  1. Open up the BDE Configuration Manager
  2. Click on the Paradox driver entry
  3. In the Block Size field in the Parameters list, change the block size to the size you prefer. I use 16K (or 16384 bytes; should be in multiples of 1024, so 16K = 16x1024)
  4. Save the IDAPI file.

From now on, every time you create a table, it will have the block size you specified. For your current problem, you're going to have create a new table with the same structure as the original, then add the records from the original into the new table. From there, you shouldn't have any "Table is Full" errors.

One caveat: You might be tempted to use the 32K block size. Don't. It's unsafe.

Actually, at any block size, tables in excess of 500 MB start showing very strange behavior. For instance, I have a table that is 688 MB with more than 2.5 million records. I can't sort it, because once the temporary table that gets created during a sort reaches 512 MB, I get a "resource limit exceeded" error. Apparently, the temporary tables are by default 8K. The unfortunate thing is that you can't change this. Yikes! Furthermore, large tables that have 32K block sizes cause errors in queries (i.e., you get corrupt data when using tables with 32K block sizes, and regularly at that).

DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date