Novator / Pandora

P2P Social Network
Other
147 stars 32 forks source link

Падает после запуска #20

Closed Slavenin closed 8 years ago

Slavenin commented 8 years ago

Обновил версию до последней, перезапускаю, две секунда и программа вылетает, ошибок не показывает.

Novator commented 8 years ago

Под Linux или под Windows? Если Linux, то что в консоль пишет? (Запусти из командной строки /Pandora/pandora.sh) Если винда, то какие последние строчки в файле /Pandora/base/stdout.log ?

Novator commented 8 years ago

Попробуй удалить базу /Pandora/base/pandora.sqlite.

Slavenin commented 8 years ago

Ну да, падает в базе. Сносить всё не очень хочется, чтобы потом не настраивать заново. В какой таблице не хватает поля?

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:innew' 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 prepare' 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:inexecute' from pandora.rb:1695:in select_table' from pandora.rb:1793:inget_tab_select' from pandora.rb:2397:in select' from pandora.rb:6119:inresume_harvest' from pandora.rb:10544:in block in start_or_stop_hunt' from pandora.rb:22544:incall' from pandora.rb:22544:in main' from pandora.rb:22544:ininitialize' from pandora.rb:22965:in new' from pandora.rb:22965:in

'

Konard commented 8 years ago

А разве пандора не поддерживает миграцию данных в базе?

Novator commented 8 years ago

@Konard, нет, сейчас Пандора не умеет сама пересоздавать таблицу (в базе /base/pandora.sqlite), если метаданные (файл /model/01-base.xml) были изменены. Я давно хочу это сделать, задача стоит в TODO, но руки так и не дошли.

По идее, при изменении файла метаданных, Пандора должна это прочухать, пересоздать соответствующую таблицу и перенести данные. Но это не реализовано.

@Slavenin, поэтому сейчас только 2 способа пересоздать таблицу: 1) либо в Пандоре открыть нужную таблицу (в твоём случае Мир-Файлы), нажать правой кнопкой мыши и выбрать "Пересоздать". Потом закрыть список и снова открыть. Но все данные в этой таблице будут потеряны. 2) либо удалить базу (/base/pandora.sqlite) и Пандора её создаст заново - но при этом будут потеряны данные всех таблиц, включая Людей, Ключи и Узлы.

Novator commented 8 years ago

Добавил обработку исключений при работе с таблицами: теперь прога валиться не будет, а будет писать в лоток "Кривой select", "Кривой update". Это будет означать, что надо пересоздать таблицу.

Novator commented 8 years ago

@Slavenin, чтобы Пандора не падала при запуске, запусти её с другим портом, допиши в "Свойствах" ярлыка Pandora на Рабочем столе:

..pandora.rb --port 1111

Тогда она не сможет подключиться сама к себе, и охота не пройдёт. Ты сможешь открыть Мир-Файлы и пересоздать таблицу.

Slavenin commented 8 years ago

А просто создать поле в бд через клиент к sqlite никак?

Novator commented 8 years ago

Можно добавить новое поле. Можно переименовать существующее поле. Можно разделить одно поле на 2. Можно слить 2 поля в одно.

Всё это можно сделать. И это стоит в TODO. Но, как выше писал, я это пока не сделал. Можешь сам сделать выскакивающий диалог, делающий всё указанное при обнаружении разницы между базой и метаданными, и прислать мне пул-реквест.

Slavenin commented 8 years ago

Блин, я сам могу добавить это поле в бд, мне нужно название таблицы куда его вставлять

Novator commented 8 years ago

Название таблицы "blobs". Там чо, уже так много файлов заведено? :)

p.s. Сделай выгрузку предварительно "Мир-Файлы", ПКМ "Выгрузить", формат csv.

Novator commented 8 years ago

Ты мне скажи, чо, серьезно какие-то уже данные хранишь? Я то ведь думаю, что Пандорой никто не пользуется всерьез. Если не так, то возможно это меня сподвигнет-таки..

Novator commented 8 years ago

Кстати, я месяца 2 назад сделал автоматическое добавление поля через "ALTER TABLE ADD COLUMN" (функция insert_new_filed), теперь Пандора сама умеет автоматически добавлять недостающие поля.

Slavenin commented 8 years ago

Да не то чтобы прям храню, сейчас переехал на другую ось, стало интересно. Есть какой-то рабочий узел к которому можно подключиться?

Novator commented 8 years ago

Сомневаюсь. Имхо, сейчас Пандорой по-хорошему нельзя пользоваться. Если только как средством обмена шифрованными сообщениями, но это мало кому интересно.