“unsupported collating sort order” when trying to

2019-01-20 02:51发布

问题:

I'm currently working on a Java application with the purpuose of reading a Microsoft Access file using Jackcess open source library. The Java application will later present the tables contained in the Access file.

Here is my code so far:

public class Test {

    public static void main(String[] args) throws IOException {

        File file = new File("\\\\student.local\\Files\\Home\\nat12mja\\Downloads\\Testdoc.accdb");
        Database db = DatabaseBuilder.open(file);

        Table table = db.getTable("Table1");

        for(Row row : table){
            System.out.println(row.get("Field1"));
        }    

    }
}

These are my imports:

    import java.io.File;
    import java.io.IOException;
    import com.healthmarketscience.jackcess.Database;
    import com.healthmarketscience.jackcess.DatabaseBuilder;

Also, I've added these Jar files to my referenced librarys:

commons-lang-2.4.jar, commons-logging-1.1.jar, jackcess-2.0.2.jar

When I run my application I get this error message(The System.out.println() works as intended):

    dec 21, 2013 1:54:27 EM com.healthmarketscience.jackcess.impl.IndexData setUnsupportedReason
    WARNING: unsupported collating sort order SortOrder[1053(0)] for text index, making read-only
    dec 21, 2013 1:54:27 EM com.healthmarketscience.jackcess.impl.DatabaseImpl readSystemCatalog
    INFO: Could not find expected index on table MSysObjects

I've tested with older versions of the same Access file, but the problem persists.

Is this a library related problem? Or am I missing something else?

回答1:

Jackcess only supports indexes on Text fields in an Access database when the database is using the "General" sort order (ref: here).

According to the related Microsoft Office support page:

To reset the sort order for an existing database, select the language you want to use and then run a compact operation on the database.

So, for Access 2010 that would presumably mean selecting File > Options from the Access ribbon bar, choosing "General" or "General - Legacy" for the "New database sort order" on the "General" tab, ...

... then performing a "Compact and Repair" on the database.

Note: If Windows is using a non-English locale then the procedure described above might not rectify the problem. See this answer for details.