PySide6 QSqlTableModel не видит одну из таблиц QSqlDatabase
В базе данных есть несколько таблиц. Все открываются замечательно, кроме одной.
db = QSqlDatabase("QODBC")
db.setDatabaseName(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\...\file.accdb")
db.open(username, password)
model = QSqlTableModel(db=db)
model.setTable("messages")
model.select()
Выводит False.
Команда model.lastError().text() выводит:
'Unable to find table messages'
При том, что команда db.tables() выводит:
['messages', 'table1', 'table2', ..., 'tableN']
Непосредственно через MS Access эта таблица открывается
Уже пытался и через цикл открыть. Ключевое слово в db.tables() находилось, но конкретно таблицу 'messages' QSqlTableModel не видит.
Попытался сменить MS Access на версию 2016 года. Думал, вдруг какой-то определённый тип из MS Access 2019 конфликтует со старым драйвером. Не помогло.
Думал скачать более новый драйвер, а такого не нашёл. Пытался покопаться в реестре... Тоже ничего не нашёл.
Пожалуйста, помогите
Ответы (1 шт):
Итак, я разобрался в проблеме методом тыка. Я изначально был прав по поводу конфликта драйвера с типом данных bigint, вот только не хватало нескольких дополнительных действий.
По всей видимости, когда вы пытаетесь поставить тип данных bigint и сохранить, Access предупреждает вас, что из-за него БД могут не поддерживать старые версии, а вы всё равно сохраняете, он автоматически ставит минимальную поддерживаемую версию, что-ли?
Помогло разделение данных, предварительно поменяв тип данных bigint на другой тип данных. Работа с базами данных->Перемещение данных->База данных Access.
