Найти - Пользователи
Полная версия: Сюрпризы от sqlite3
Начало » Базы данных » Сюрпризы от sqlite3
1
beelze
имею бд sqlite3, использую штатный модуль sqlite3/python2.7
1. Столкнулся с проблемой - не работает каскадность. Оказывается, что
SQLite foreign keys are disabled for compatibility purposes. You need to enable them manually right after each connection to the database.
con.execute("PRAGMA foreign_keys = ON")
Приятный сюрпризец. Сразу захотелось узнать, что еще подобного «припасено» - может быть где-то это описано?

2. Та же база, те же лица, только Windows взамест Linux.
имею триггер на представлении (поля OID, name, pid, total), приведено начало триггера:
CREATE TRIGGER [ListUsers_insert]
INSTEAD OF INSERT
ON ListUsers
BEGIN
-- valid: INSERT (name), INSERT (name, pid, total)
-- Field checks
    SELECT RAISE(ABORT, 'OID can not be set') WHERE NOT new.OID IS NULL;

тут шаблон испытывает некое напряжение (откуда взялось значение у OID? Есть такое поле в представлении, знаю что это также и алиас для rowid, но это как бы не при чем здесь):
>>> s._conn.execute('INSERT INTO ListUsers (name,pid,total) VALUES (?,?,?)', ('YYY',510,10))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.IntegrityError: OID can not be set

замечу, что в линупсах с тем же файлом бд все это работает как ожидалось.
FishHook
beelze
Подход мне совершенно непонятный. Порожден, видимо, привычкой к спешке. Как я уже не раз объяснил, именно скулайт в данном случае - то, что нужно. И средство его администрирования тоже должно быть выбрано правильно, а не быстро. Это сэкономит в будущем и время и нервы.
Сэкономило?
beelze
FishHook, что, был кирпичик все же был и оставил след в определенном месте? А теперь будьте любезны объяснить, каким образом это относится к заданному мною вопросу - надо полагать, как раз-таки ответом Вы не владеете? Ну и под конец - скулайт под Win мне собсна без необходимости (хотя и любопытно, что это за дела такие), времени на решение проблемы с каскадностью было потрачено ну минут 5 от силы, но мне и их жалко, поэтому, разумеется, хотелось бы увидеть инфу о неожиданностях в одном месте и в удобном виде.
PooH

[quote=beelze] Сразу захотелось узнать, что еще подобного «припасено» - может быть где-то это описано? [/quote] Насчет отсутствия регистронезависимого поиска в локалях отличных от C в курсе?

Lexander
Для разных ОС в sqlite есть свои отдельные реализации интерфейса.
Поэтому различия в поведении могут быть.
beelze
PooH, вопросы, относящиеся к локалям - платформо- и прочеезависимы по определению, так что неожиданностями их я бы не назвал. Под «сюрпризами» я понимаю внезапные обнаружения неканонического поведения - таких, как SQLite foreign keys are disabled или Null в PRIMARY KEY. Я уже начинаю подумывать, что и процедуры в скулайте есть, только не включены

Поэтому различия в поведении могут быть.\
однако чрезвычайно фундаментальное различие…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB