sqlite3.DatabaseError: malformed database schema при переносе SQLite3 базы с Windows10 на Ubuntu16.04
Решил перенести работающий код, использующий SQLite c Windows10 на Ubunta 16.4. Да к тому же на ARM64 NANOPI NEO4. Ну получился такой себе серверочек. Одна программа пошла. А вот вторая, использующая SQLite - ну никак. Говорит, что структура базы плохая.
pi@NanoPi-NEO4:~/py_codes/scheduler$ python3 main_scheduler.py
2021-04-01 14:51:39,165 - Sheduler.get_sheduled_tasks - INFO - Вызов с args=(<sqlite3.Cursor object at 0x7fa5d6a960>,), kwargs={}
Traceback (most recent call last):
File "main_scheduler.py", line 586, in <module>
sheduled_tasks = get_sheduled_tasks(c)
File "/home/pi/py_codes/scheduler/logger.py", line 20, in wrap_log
result = func(*args, **kwargs)
File "main_scheduler.py", line 112, in get_sheduled_tasks
records = cursor.execute('SELECT * FROM tasks_sheduled WHERE not finished').fetchall()
sqlite3.DatabaseError: malformed database schema (tasks_reports) - default value of column [is_handmade] is not constant
То есть основная ошибка:
sqlite3.DatabaseError: malformed database schema (TABLE_NAME) - default value of column [COLUMN_NAME] is not constant
Но я ничего не менял в базе. Просто скопипастил файл.
Неужели нужна какая-то специальная миграция?
Для справки. На винде Python 3.8, а на убунте - Python 3.6
default value of column [is_handmade] установил в False.
Ответы (2 шт):
Проблема оказалась как раз в False. Видимо на винде можно , а на убунте нет )) Везде заменил булевы значения при создании базы по умолчания с False на 0, и чтение пошло )
2.1. Boolean Datatype
SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers
0(false) and1(true).