SQLite - можно ли заставить работать нецелочисленный первичный ключ? - PullRequest
4 голосов
/ 02 августа 2010

Спасибо за чтение и, надеюсь, за ответ,

Из-за унаследованных проблем и политики компании я работаю с SQLite 2.8.17 и имею несколько varchars в качестве первичных ключей.

Но когда язапустить "pragma целостность_check" , он сообщает "rowid отсутствует в индексе" и "неправильно # записей в индексе" в таблицах с первичным ключом varcharно возвращенный результат - ОК.

Расширенный доступ к БД и использование БД (около дня нагрузочного тестирования), похоже, приводит к сбою БД ( проверка целостности возвращает НЕИСПРАВНОСТЬ) и является единственнымОбъяснение (через .explain ) - это те же ошибки, что и ранее ( "rowid отсутствует в индексе" и "неправильно # записей в индексе" ).

Кто-нибудь может помочь?Что-то не так, что я делаю?

Спасибо.

1 Ответ

0 голосов
/ 02 августа 2010

Если вы пылесосите базу данных, это должно как минимум восстановить ее без этой ошибки проверки целостности. Затем, как вы говорите, попробуйте день доступа и использования и посмотрите, сохраняется ли ошибка.

Чтобы очистить базу данных, введите ее в командной строке и введите: VACUUM;, или используйте командную строку:

sqlite2.exe mydb.db "vacuum;"

(хотя, похоже, я помню, что SQLite2 требовалось имя таблицы после VACUUM, поэтому вам, возможно, придется немного поэкспериментировать. Тем не менее это повлияет на все таблицы.)

...