Не пустое ограничение, не навязанное мс доступом после создания таблицы с UCanAccess

Это продолжение этого вопроса. Ошибка немного отличается с новой версией UCanAccess сейчас.

Я создаю файл базы данных с таблицей, содержащей столбец NOT-NULL, используя последнюю версию UCanAccess (4.0.3, включая Jackcess 2.1.9), подобную этой

    // Create a database + connect
    DatabaseBuilder.create(FileFormat.V2010, new File(path));
    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");     
    conn = DriverManager.getConnection("jdbc:ucanaccess://" + path + ";singleconnection=true" ,"", ""); 

    // Create table     
    String sql = "CREATE TABLE Test (id AUTOINCREMENT PRIMARY KEY, value CHAR(1) NOT NULL)";
    conn.createStatement().executeUpdate(sql);

Попытка вставить значения работает нормально с помощью UCanAccess, NULL отклоняется для столбца "значение" UCanAccess, как и ожидалось. Однако, когда я использую таблицу в Access напрямую, NULL принимается! Работа с данными через UCanAccess позже приводит к проблемам, так как таблица не может быть записана в:

ВНИМАНИЕ: Обнаружено нарушение ограничения Not Null, таблица Test, строка строки [87:1][{id=2,value=}]: создание таблицы Test только для чтения

Открытие и сохранение таблицы из представления конструктора в Access решает проблему, но не является долгосрочным вариантом. Как заставить Access соблюдать ограничение NOT-NULL?

1 ответ

Это было связано с известной проблемой с Jackcess 2.1.10. Это должно быть исправлено в следующих выпусках Jackcess и UCanAccess, соответственно.

Другие вопросы по тегам