Closed Slavenin closed 8 years ago
Под Linux или под Windows? Если Linux, то что в консоль пишет? (Запусти из командной строки /Pandora/pandora.sh) Если винда, то какие последние строчки в файле /Pandora/base/stdout.log ?
Попробуй удалить базу /Pandora/base/pandora.sqlite.
Ну да, падает в базе. Сносить всё не очень хочется, чтобы потом не настраивать заново. В какой таблице не хватает поля?
C:/Program Files (x86)/Pandora/ruby193/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3/database.rb:91:in
initialize': no such column: sha1 (SQLite3::SQLException) from C:/Program Files (x86)/Pandora/ruby193/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3/database.rb:91:in
new' from C:/Program Files (x86)/Pandora/ruby193/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3/database.rb:91:inprepare' from C:/Program Files (x86)/Pandora/ruby193/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3/database.rb:134:in
execute' from pandora.rb:1695:inselect_table' from pandora.rb:1793:in
get_tab_select' from pandora.rb:2397:inselect' from pandora.rb:6119:in
resume_harvest' from pandora.rb:10544:inblock in start_or_stop_hunt' from pandora.rb:22544:in
call' from pandora.rb:22544:inmain' from pandora.rb:22544:in
initialize' from pandora.rb:22965:innew' from pandora.rb:22965:in
'
А разве пандора не поддерживает миграцию данных в базе?
@Konard, нет, сейчас Пандора не умеет сама пересоздавать таблицу (в базе /base/pandora.sqlite), если метаданные (файл /model/01-base.xml) были изменены. Я давно хочу это сделать, задача стоит в TODO, но руки так и не дошли.
По идее, при изменении файла метаданных, Пандора должна это прочухать, пересоздать соответствующую таблицу и перенести данные. Но это не реализовано.
@Slavenin, поэтому сейчас только 2 способа пересоздать таблицу: 1) либо в Пандоре открыть нужную таблицу (в твоём случае Мир-Файлы), нажать правой кнопкой мыши и выбрать "Пересоздать". Потом закрыть список и снова открыть. Но все данные в этой таблице будут потеряны. 2) либо удалить базу (/base/pandora.sqlite) и Пандора её создаст заново - но при этом будут потеряны данные всех таблиц, включая Людей, Ключи и Узлы.
Добавил обработку исключений при работе с таблицами: теперь прога валиться не будет, а будет писать в лоток "Кривой select", "Кривой update". Это будет означать, что надо пересоздать таблицу.
@Slavenin, чтобы Пандора не падала при запуске, запусти её с другим портом, допиши в "Свойствах" ярлыка Pandora на Рабочем столе:
..pandora.rb --port 1111
Тогда она не сможет подключиться сама к себе, и охота не пройдёт. Ты сможешь открыть Мир-Файлы и пересоздать таблицу.
А просто создать поле в бд через клиент к sqlite никак?
Можно добавить новое поле. Можно переименовать существующее поле. Можно разделить одно поле на 2. Можно слить 2 поля в одно.
Всё это можно сделать. И это стоит в TODO. Но, как выше писал, я это пока не сделал. Можешь сам сделать выскакивающий диалог, делающий всё указанное при обнаружении разницы между базой и метаданными, и прислать мне пул-реквест.
Блин, я сам могу добавить это поле в бд, мне нужно название таблицы куда его вставлять
Название таблицы "blobs". Там чо, уже так много файлов заведено? :)
p.s. Сделай выгрузку предварительно "Мир-Файлы", ПКМ "Выгрузить", формат csv.
Ты мне скажи, чо, серьезно какие-то уже данные хранишь? Я то ведь думаю, что Пандорой никто не пользуется всерьез. Если не так, то возможно это меня сподвигнет-таки..
Кстати, я месяца 2 назад сделал автоматическое добавление поля через "ALTER TABLE ADD COLUMN" (функция insert_new_filed), теперь Пандора сама умеет автоматически добавлять недостающие поля.
Да не то чтобы прям храню, сейчас переехал на другую ось, стало интересно. Есть какой-то рабочий узел к которому можно подключиться?
Сомневаюсь. Имхо, сейчас Пандорой по-хорошему нельзя пользоваться. Если только как средством обмена шифрованными сообщениями, но это мало кому интересно.
Обновил версию до последней, перезапускаю, две секунда и программа вылетает, ошибок не показывает.