RSDN@Home и SQLite
От: Дьяченко Александр Россия  
Дата: 26.08.07 12:29
Оценка: 88 (7)
По прозьбам трудящихся как и обещял посмотрел что с SQLite (Re[5]: [офф] FB выкидываем — что делать?
Автор: Дьяченко Александр
Дата: 23.08.07
). Пора подводить итоги 18 часового марафона борьбы с SQLite, итак:
Теперь о хорошем что же сделано:
Теперь снова о плохом:
... << RSDN@Home 1.2.0 alpha rev. 726>>
Re[3]: RSDN@Home и SQLite
От: Дьяченко Александр Россия  
Дата: 31.08.07 17:50
Оценка: 70 (3)
Здравствуйте, rameel, Вы писали:

0rc>>Супер. Это по теме. Теперь вопрос. Кто-нибудь делал сравнительную характеристику, насколько быстрее медленее будет работать RSDN@Home с SQLLite по сравнению с MSSQL 2000?

R>ИМХО, сравнивать еще не с чем. По моему еще не все запросы отлажены до конца. Вот когда дойдет до рабочего состояния, тогда может попробую импортнуть данные в базу и сравнить характеристики.

Ну уже более менее работает и залито в SVN (731 ревизия) — можно проверять.
... << RSDN@Home 1.2.0 alpha rev. 730>>
Re[7]: RSDN@Home и SQLite
От: Дьяченко Александр Россия  
Дата: 03.09.07 14:51
Оценка: 17 (3)
Здравствуйте, rsn81, Вы писали:

ДА>>Понятно, такое уже видел. Вечером буду дома поправлю.

R>Быть может вы также найдете время и вот эти мелочи исправить? Заранее благодарен.

Вроде поправил r740 (это
Автор: rsn81
Дата: 02.09.07
тоже поправил)

R>
  1. В таблице "Статистика сообщений пользователя" в столбце Форум не отображается собственно название форума. Не знаю, связано ли это именно с SQLite... но вроде бы с FB было нормально.

    Не знаю, но после того как я исправил, то что далее столбец форум заполнен, может наведенка?

    R>
  2. После шальной попытки упаковать БД (командой меню Файл) в собственном профиле в пункте "Первое сообщение" теперь отображается сообщение "Не удается запустить приложение. Системная база данных отсут" следующего содержания:[q]Ошибка:
    R>Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.

    Так лучше не делать (вот здесь — Compact Database
    Автор: Блудов Павел
    Дата: 03.09.07
    мысль хорошая высказана, может доделаем)

    R>
  3. Вместо отображения администрации форума получаем:

    Исправил.

    R>
  4. Вместо отображения статей форума получаем:

    Исправил.

    R>
... << RSDN@Home 1.2.0 alpha rev. 738>>
Re: Новая ревизия 745
От: Дьяченко Александр Россия  
Дата: 05.09.07 15:22
Оценка: 17 (3)
Прикручивание SQLite (продолжение): Адаптация запросов.
r745:
r743:
r739:
... << RSDN@Home 1.2.0 alpha rev. 745>>
Re: RSDN@Home и SQLite
От: serb Россия  
Дата: 16.09.07 18:30
Оценка: +2
Привет

Скачал и запустил янус в первый раз Создал базу с скллайт и получил ошибку

Rsdn.Janus.DBSchemaException: Ошибка на этапе реструктуризации базы:
Error when prepared SqlDiff
в Rsdn.Janus.DbsmManager.Restruct(IGenericServiceProvider serviceProvider)
в Rsdn.Janus.Janus.Main()

Ревизия 20070911-1207-r746
Re: RSDN@Home и SQLite
От: Дьяченко Александр Россия  
Дата: 29.08.07 18:27
Оценка: 28 (1)
Обновленный вариант, переделал запросы надуюсь все (но может что забыл) проверял:
Забирать здесь
... << RSDN@Home 1.2.0 alpha rev. 730>>
Это by design.
От: Блудов Павел Россия  
Дата: 29.08.07 10:40
Оценка: 15 (1)
Здравствуйте, Дьяченко Александр, Вы писали:

ДА>
  • Ну и наконец самое неприятное при синхронизации валится в самом конце при обновлении LastVersion-ов в таблице vars с сообщением о блокировке БД.

    Это вобщем-то легко объяснимо: в Janus\Core\Synchronization\Synchronizer.cs в методе ProcessSvcResponse имеем
    using (JanusDB db = new JanusDB())
    {
        db.BeginTransaction();
        
        // ...
        
        DBVars.Instance["LastRatingRowVersion"] = SpecialByteConvertor.ToString(svcResp.lastRatingRowVersion);
        DBVars.Instance["LastForumRowVersion"]  = SpecialByteConvertor.ToString(svcResp.lastForumRowVersion);
    
        // ...
        
        db.ComminTransaction();
    }


    Так вот, при попытке присвоить значение переменной, хранящейся в БД (DBVars.Instance = smth) создаётся параллельный Update в своём собственном JanusDB.
    А вот этого-то SQLite и не может.

    Если эти две строчки тупо вынести за Using (один фиг они выполняются сами по себе и не синхронизованы с основной транзакцией) то всё работает.
    Ну, почти всё. В Janus\Core\DataManagement\DatabaseManager.cs в методе UpdateTopicInfoByFilter имеем
    if (!string.IsNullOrEmpty(filter))
        sql = sql + "AND " + filter;

    а должно быть
    if (!string.IsNullOrEmpty(filter))
        sql = sql + " AND " + filter;


    Иначе "AND" приклеивается к завершающемуся "= 0" и получается синтаксическая ошибка.

    Дальше всё пучком кроме того что sqlite теряет колонку mid на Join'е. Но это я так понял ты уже научился побеждать.
    Если нет — пиши будет вместе думать.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
  • select top #
    От: Блудов Павел Россия  
    Дата: 31.08.07 01:58
    Оценка: 12 (1)
    Здравствуйте, Дьяченко Александр, Вы писали:

    ДА>
  • В виду того что TOP не поддерживается пришлось переделать в ScriptFactory свойство Top в метод Top(expression) и выдавать в нем пустую строку, поидее надо также во всех местах где он используется результат обрезать руками (не зделано).
    Здесь
    Автор: Веселый кролик
    Дата: 29.08.07
    говорят что поддерживается, только называется LIMIT.
    У Оракла, катсти, TOP называется FETCH FIRST ### ROWS ONLY и тоже пишется в конце.

    В связи с чем идея: вынести поддержку SELECT TOP в провайдера.
    Например провайдеру передаётся
    string topQuery = db.DataProvider.FormatSelect("* FROM SomeTable WHERE 1 > 0 AND 0=0", 50);

    А на выходе из DataProvider.FormatSelect имеем либо
    "SELECT TOP 50 * FROM SomeTable WHERE 1 > 0 AND 0=0"
    либо
    "SELECT * FROM SomeTable WHERE 1 > 0 AND 0=0 LIMIT 50"
    либо исключение о том, что метод не поддерживается.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
  • Re[9]: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 03.09.07 23:46
    Оценка: 10 (1)
    Здравствуйте, rsn81, Вы писали:

    R>Добавление темы в избранное приводит к:


    Поправил r743
    ... << RSDN@Home 1.2.0 alpha rev. 742>>
    Re: Новая версия залита в SVN (r731)
    От: Дьяченко Александр Россия  
    Дата: 31.08.07 17:50
    Оценка: 6 (1)
    Благодаря AndrewVK дорвался до SVN

    Изменения:
    ... << RSDN@Home 1.2.0 alpha rev. 730>>
    Re[2]: Это by design.
    От: Блудов Павел Россия  
    Дата: 30.08.07 03:23
    Оценка: 5 (1)
    Здравствуйте, Дьяченко Александр, Вы писали:

    БП>>Так вот, при попытке присвоить значение переменной, хранящейся в БД (DBVars.Instance = smth) создаётся параллельный Update в своём собственном JanusDB.

    БП>>А вот этого-то SQLite и не может.

    ДА>странно вроде работа паралельная заявлена или она одно из обращений блокирует при этом (а так как из одного потока, то первое обращение блокирует а второе где как раз происходит запись в vars получает отлуп)?


    Заявлено паралельное чтение. А запись только в одни руки.

    ДА>Я наверно у DBVars сделаю еще один индексатор с 2 параметрами JanusDB и string так наверно правильнее будет (а не выносить за using).

    +1.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Получилось
    От: Блудов Павел Россия  
    Дата: 29.08.07 09:58
    Оценка: 2 (1)
    Здравствуйте, Дьяченко Александр, Вы писали:

    ДА>здесь

    Отсюда без проблем. Вообще, лучший файлообменник это gmalfs но rapidshare тоже ничего.
    Вобщем всё скачалось и собралось. Буду пробовать.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Кто успел тот и съел
    От: Блудов Павел Россия  
    Дата: 19.09.07 07:50
    Оценка: :)
    Здравствуйте, Дьяченко Александр, Вы писали:

    ДА>Вобщем у меня базу создает (3 раза пробывал), выкладывай ошибку полностью может что будет ясно.

    Я уже поправил. бага была такая:
    protected void DeleteDdlCommandsByFilter(string filter)
    {
        DataView dwr = _ddlCmdTable.DefaultView;
        dwr.RowFilter = filter;
        for (int j = 0; j < dwr.Count; j++)
            dwr[j].Delete();
        _ddlCmdTable.AcceptChanges();
    }

    dwr.Count уменьшается на 1 с каждым вызовом dwr[j].Delete(). Правильно так
    protected void DeleteDdlCommandsByFilter(string filter)
    {
        DataView dwr = _ddlCmdTable.DefaultView;
        dwr.RowFilter = filter;
        while (dwr.Count > 0)
            dwr[0].Delete();
        _ddlCmdTable.AcceptChanges();
    }
    ... << RSDN@Home 1.2.0 alpha rev. 746>>
    Re: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 27.08.07 09:23
    Оценка:
    За оценки конечно спасибо. Если кто поможет/подскажет что делать с вот этим:
    ДА> То в течении недели я добил бы и выложил бы куда-нить, то что получилось.
    Заодно попробывал бы избавится от применения enum-а DbEngineType везде кроме реструктуризатора (сильно портит нервы при добавлении новой БД), в принципе в реструктуризаторе тоже наверно можно избавится, но туда у меня лезть особого желания нет.
    Шаги в данном направлении сделаны в части моего кода надо переписать слегка остальные.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Re[2]: RSDN@Home и SQLite
    От: Блудов Павел Россия  
    Дата: 27.08.07 10:54
    Оценка:
    Здравствуйте, Дьяченко Александр, Вы писали:

    ДА>За оценки конечно спасибо. Если кто поможет/подскажет что делать с вот этим:

    ДА>То в течении недели я добил бы и выложил бы куда-нить, то что получилось.
    Так скажи, где можно пощупать то, что уже есть?
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Re[3]: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 27.08.07 11:44
    Оценка:
    Здравствуйте, Блудов Павел, Вы писали:

    ДА>>За оценки конечно спасибо. Если кто поможет/подскажет что делать с вот этим:

    ДА>>То в течении недели я добил бы и выложил бы куда-нить, то что получилось.
    БП>Так скажи, где можно пощупать то, что уже есть?

    На RSDN места не хватает. выкладываю на filepost.ru — здесь
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Re[3]: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 27.08.07 11:48
    Оценка:
    Здравствуйте, Блудов Павел, Вы писали:

    ДА>>За оценки конечно спасибо. Если кто поможет/подскажет что делать с вот этим:

    ДА>>То в течении недели я добил бы и выложил бы куда-нить, то что получилось.
    БП>Так скажи, где можно пощупать то, что уже есть?

    На RSDN места не хватает. выкладываю на filepost.ru — здесь. Там исходники + маленькая БД (пользователи + форумы + достаточно свежие LastVersion в таблице vars) если с нуля при синхронизации пытается выкачать 80 метров (из-за вырезания TOP-ов наверное) а мне через мобильнк такое не выкачать.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Не выходит
    От: Блудов Павел Россия  
    Дата: 29.08.07 02:57
    Оценка:
    Здравствуйте, Дьяченко Александр, Вы писали:

    ДА>выкладываю на filepost.ru

    Не получается у меня от туда скачать. Ни хотя бы зарегистрироваться.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Re: Не выходит
    От: Дьяченко Александр Россия  
    Дата: 29.08.07 03:56
    Оценка:
    Здравствуйте, Блудов Павел, Вы писали:

    ДА>>выкладываю на filepost.ru

    БП>Не получается у меня от туда скачать. Ни хотя бы зарегистрироваться.

    Ну давай попробую еще раз на другой ресурс.
    здесь

    Или скажи куда можно выложить.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Re: Это by design.
    От: Дьяченко Александр Россия  
    Дата: 29.08.07 11:24
    Оценка:
    Здравствуйте, Блудов Павел, Вы писали:

    ДА>>
  • Ну и наконец самое неприятное при синхронизации валится в самом конце при обновлении LastVersion-ов в таблице vars с сообщением о блокировке БД.

    БП>Это вобщем-то легко объяснимо: в Janus\Core\Synchronization\Synchronizer.cs в методе ProcessSvcResponse имеем

    БП>
    БП>using (JanusDB db = new JanusDB())
    БП>{
    БП>    db.BeginTransaction();
        
    БП>    // ...
        
    БП>    DBVars.Instance["LastRatingRowVersion"] = SpecialByteConvertor.ToString(svcResp.lastRatingRowVersion);
    БП>    DBVars.Instance["LastForumRowVersion"]  = SpecialByteConvertor.ToString(svcResp.lastForumRowVersion);
    
    БП>    // ...
        
    БП>    db.ComminTransaction();
    БП>}
    БП>


    БП>Так вот, при попытке присвоить значение переменной, хранящейся в БД (DBVars.Instance = smth) создаётся параллельный Update в своём собственном JanusDB.

    БП>А вот этого-то SQLite и не может.

    странно вроде работа паралельная заявлена или она одно из обращений блокирует при этом (а так как из одного потока, то первое обращение блокирует а второе где как раз происходит запись в vars получает отлуп)?

    БП>Если эти две строчки тупо вынести за Using (один фиг они выполняются сами по себе и не синхронизованы с основной транзакцией) то всё работает.

    БП>Ну, почти всё. В Janus\Core\DataManagement\DatabaseManager.cs в методе UpdateTopicInfoByFilter имеем
    БП>
    БП>if (!string.IsNullOrEmpty(filter))
    БП>    sql = sql + "AND " + filter;
    БП>

    БП>а должно быть
    БП>
    БП>if (!string.IsNullOrEmpty(filter))
    БП>    sql = sql + " AND " + filter;
    БП>


    БП>Иначе "AND" приклеивается к завершающемуся "= 0" и получается синтаксическая ошибка.


    это я не трогал.

    БП>Дальше всё пучком кроме того что sqlite теряет колонку mid на Join'е. Но это я так понял ты уже научился побеждать.

    БП>Если нет — пиши будет вместе думать.

    Ок. Буду дальше ковырять. Я наверно у DBVars сделаю еще один индексатор с 2 параметрами JanusDB и string так наверно правильнее будет (а не выносить за using).
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
  • Re[2]: RSDN@Home и SQLite
    От: rameel https://github.com/rsdn/CodeJam
    Дата: 29.08.07 19:02
    Оценка:
    Здравствуйте, Дьяченко Александр, Вы писали:

    ДА>Забирать здесь


    Не скачивается. Может лучше у AndrewVK за доступом в репозитории, а там можно и бранч сделать, много удобнее будет, чем каждый раз файлы заливать
    ... << RSDN@Home 1.2.0 alpha rev. 730 >>
    Re[3]: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 30.08.07 00:57
    Оценка:
    Здравствуйте, rameel, Вы писали:

    ДА>>Забирать здесь


    R>Не скачивается. Может лучше у AndrewVK за доступом в репозитории, а там можно и бранч сделать, много удобнее будет, чем каждый раз файлы заливать


    Попробуй с другого места у меня вроде дает скачать, к тому же написано что скачано 4 раза.
    Да через SVN было бы лучше. Ладно попробую написать AndrewVK.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Re[3]: Это by design.
    От: Дьяченко Александр Россия  
    Дата: 30.08.07 03:52
    Оценка:
    Здравствуйте, Блудов Павел, Вы писали:

    ДА>>странно вроде работа паралельная заявлена или она одно из обращений блокирует при этом (а так как из одного потока, то первое обращение блокирует а второе где как раз происходит запись в vars получает отлуп)?

    БП>Заявлено паралельное чтение. А запись только в одни руки.

    Спасибо, не заметил.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Re: RSDN@Home и SQLite
    От: 0rc Украина  
    Дата: 30.08.07 15:17
    Оценка:
    Здравствуйте, Дьяченко Александр, Вы писали:

    Супер. Это по теме. Теперь вопрос. Кто-нибудь делал сравнительную характеристику, насколько быстрее медленее будет работать RSDN@Home с SQLLite по сравнению с MSSQL 2000?
    ... << RSDN@Home 1.2.0 alpha rev. 725>>
    Re[2]: RSDN@Home и SQLite
    От: rameel https://github.com/rsdn/CodeJam
    Дата: 30.08.07 16:08
    Оценка:
    Здравствуйте, 0rc, Вы писали:

    0rc>Супер. Это по теме. Теперь вопрос. Кто-нибудь делал сравнительную характеристику, насколько быстрее медленее будет работать RSDN@Home с SQLLite по сравнению с MSSQL 2000?


    ИМХО, сравнивать еще не с чем. По моему еще не все запросы отлажены до конца. Вот когда дойдет до рабочего состояния, тогда может попробую импортнуть данные в базу и сравнить характеристики.
    ... << RSDN@Home 1.2.0 alpha rev. 730 >>
    Поправочка
    От: Блудов Павел Россия  
    Дата: 31.08.07 03:18
    Оценка:
    Здравствуйте, Блудов Павел, Вы писали:

    БП>У Оракла, катсти, TOP называется FETCH FIRST ### ROWS ONLY и тоже пишется в конце.

    DB2, конечно. У Оракла страый добрый

    SELECT * FROM (<original query>) WHERE ROWNUM < ###

    У FireBird SELECT FIRST ###. Вощем кто во что горазд.
    ... << RSDN@Home 1.2.0 alpha rev. 726>>
    Re: select top #
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 31.08.07 04:24
    Оценка:
    Здравствуйте, Блудов Павел, Вы писали:
    БП>В связи с чем идея: вынести поддержку SELECT TOP в провайдера.
    Альтернативная идея: внести поддержку Firebird, LiteSQL и Oracle в Linq. Там есть Take() и Skip()
    БП>Например провайдеру передаётся
    ... << RSDN@Home 1.2.0 alpha rev. 677>>
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[4]: RSDN@Home и SQLite
    От: rsn81 Россия http://rsn81.wordpress.com
    Дата: 02.09.07 19:15
    Оценка:
    Здравствуйте, Дьяченко Александр, Вы писали:

    Огромное спасибо!
    Вроде бы очень шустро работает, хотя размер базы пока мелкий.

    Замечание (пробовал в ревизии 733):
    Не получается скачать отдельную ветку. К примеру, выбираю Действие > Скачать тему..., указываю ID этой темы 2634329 — и получаю:

    BLToolkit.Data.DataException: Abort due to constraint violation
    download_topics.id may not be NULL ---> System.Data.SQLite.SQLiteException: Abort due to constraint violation
    download_topics.id may not be NULL
    в System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
    в System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
    в System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
    в BLToolkit.Data.DbManager.ExecuteNonQueryInternal()
    --- Конец трассировки внутреннего стека исключений ---
    в BLToolkit.Data.DbManager.OnOperationException(OperationType op, Exception ex)
    в BLToolkit.Data.DbManager.ExecuteNonQueryInternal()
    в BLToolkit.Data.DbManager.ExecuteNonQuery()
    в Rsdn.Janus.JanusDB.Execute(String sql, Object[] parameters)
    в Rsdn.Janus.JanusDB.ExecuteNonQuery(String sql, Object[] parameters)
    в Rsdn.Janus.DatabaseManager.InsertDownloadTopic(String source, Int32 messageId, String hint)
    в Rsdn.Janus.DownloadTopicCollection.Add(String source, Int32 messageId, String hint)
    в Rsdn.Janus.ForumDummyForm.AddTopicForDownload(Int32 messageID)
    в Rsdn.Janus.ForumDummyForm.DownloadTopic()
    в Rsdn.Janus.Framework.StripEventDispatcher.DispatchEvent(String eventId)
    в Rsdn.Janus.Framework.StripEventDispatcher.ClickHandler(Object sender, EventArgs e)
    в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
    в System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
    в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    в System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
    в System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
    в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    в System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
    в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    в System.Windows.Forms.Control.WndProc(Message& m)
    в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
    в System.Windows.Forms.ToolStrip.WndProc(Message& m)
    в System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
    в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    Re[5]: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 03.09.07 01:14
    Оценка:
    Здравствуйте, rsn81, Вы писали:

    R>Огромное спасибо!

    R>Вроде бы очень шустро работает, хотя размер базы пока мелкий.

    R>Замечание (пробовал в ревизии 733):

    R>Не получается скачать отдельную ветку. К примеру, выбираю Действие > Скачать тему..., указываю ID этой темы 2634329 — и получаю:[q]BLToolkit.Data.DataException: Abort due to constraint violation
    R>download_topics.id may not be NULL ---> System.Data.SQLite.SQLiteException: Abort due to constraint violation
    R>download_topics.id may not be NULL

    Понятно, такое уже видел. Вечером буду дома поправлю.
    ... << RSDN@Home 1.2.0 alpha rev. 735>>
    Re[6]: RSDN@Home и SQLite
    От: rsn81 Россия http://rsn81.wordpress.com
    Дата: 03.09.07 13:28
    Оценка:
    Здравствуйте, Дьяченко Александр, Вы писали:

    ДА>Понятно, такое уже видел. Вечером буду дома поправлю.

    Быть может вы также найдете время и вот эти мелочи исправить? Заранее благодарен.

    1. В таблице "Статистика сообщений пользователя" в столбце Форум не отображается собственно название форума. Не знаю, связано ли это именно с SQLite... но вроде бы с FB было нормально.

    2. После шальной попытки упаковать БД (командой меню Файл) в собственном профиле в пункте "Первое сообщение" теперь отображается сообщение "Не удается запустить приложение. Системная база данных отсут" следующего содержания:

      Ошибка:
      Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.

      Описание:


      Версия приложения:
      RSDN@Home версия 1.2.0 alpha ревизия 676

      Трассировка стека:
      в JRO.JetEngineClass.CompactDatabase(String SourceConnection, String Destconnection)
      в Rsdn.Janus.DatabaseManager.PackDatabase()
      в Rsdn.Janus.MainForm.PackDatabase()
      в Rsdn.Janus.Framework.StripEventDispatcher.DispatchEvent(String eventId)
      в Rsdn.Janus.Framework.StripEventDispatcher.ClickHandler(Object sender, EventArgs e)
      в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
      в System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
      в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
      в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
      в System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
      в System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
      в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
      в System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
      в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
      в System.Windows.Forms.Control.WndProc(Message& m)
      в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
      в System.Windows.Forms.ToolStrip.WndProc(Message& m)
      в System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
      в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    3. Вместо отображения администрации форума получаем:

      BLToolkit.Data.DataException: SQLite error
      no such column: users.userclass ---> System.Data.SQLite.SQLiteException: SQLite error
      no such column: users.userclass
      в System.Data.SQLite.SQLite3.Prepare(String strSql, SQLiteStatement previous, String& strRemain)
      в System.Data.SQLite.SQLiteCommand.BuildNextCommand()
      в System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
      в System.Data.SQLite.SQLiteDataReader.NextResult()
      в System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
      в System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
      в System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
      в BLToolkit.Data.DbManager.ExecuteReaderInternal(CommandBehavior commandBehavior)
      --- Конец трассировки внутреннего стека исключений ---
      в BLToolkit.Data.DbManager.OnOperationException(OperationType op, Exception ex)
      в BLToolkit.Data.DbManager.ExecuteReaderInternal(CommandBehavior commandBehavior)
      в BLToolkit.Data.DbManager.ExecuteListInternal[T](IList`1 list, Object[] parameters)
      в BLToolkit.Data.DbManager.ExecuteList[T]()
      в Rsdn.Janus.JanusDB.ExecuteList[T](String sql, Object[] parameters)
      в Rsdn.Janus.DatabaseManager.GetUsers(Boolean onlyTeam)
      в Rsdn.Janus.HtmlPageBuilder.GetTeamList()
      в Rsdn.Janus.JanusProtocolDispatcher.TeamListEventHandler(Object sender, JanusProtocolEventArgs e)
      в Rsdn.Janus.JanusProtocolDispatcher.DispatchRequest(String path)


    4. Вместо отображения статей форума получаем:

      BLToolkit.Data.DataException: SQLite error
      no such column: m.dte ---> System.Data.SQLite.SQLiteException: SQLite error
      no such column: m.dte
      в System.Data.SQLite.SQLite3.Prepare(String strSql, SQLiteStatement previous, String& strRemain)
      в System.Data.SQLite.SQLiteCommand.BuildNextCommand()
      в System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
      в System.Data.SQLite.SQLiteDataReader.NextResult()
      в System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
      в System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
      в System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
      в BLToolkit.Data.DbManager.ExecuteReaderInternal(CommandBehavior commandBehavior)
      --- Конец трассировки внутреннего стека исключений ---
      в BLToolkit.Data.DbManager.OnOperationException(OperationType op, Exception ex)
      в BLToolkit.Data.DbManager.ExecuteReaderInternal(CommandBehavior commandBehavior)
      в BLToolkit.Data.DbManager.ExecuteListInternal[T](IList`1 list, Object[] parameters)
      в BLToolkit.Data.DbManager.ExecuteList[T]()
      в Rsdn.Janus.JanusDB.ExecuteList[T](String sql, Object[] parameters)
      в Rsdn.Janus.DatabaseManager.GetArticleList(Int32 gid)
      в Rsdn.Janus.HtmlPageBuilder.GetArticleListText(Int32 gid)
      в Rsdn.Janus.JanusProtocolDispatcher.ArticleEventHandler(Object sender, JanusProtocolEventArgs e)
      в Rsdn.Janus.JanusProtocolDispatcher.DispatchRequest(String path)

    Re[8]: RSDN@Home и SQLite
    От: rsn81 Россия http://rsn81.wordpress.com
    Дата: 03.09.07 19:13
    Оценка:
    Здравствуйте, Дьяченко Александр, Вы писали:

    Добавление темы в избранное приводит к:

    BLToolkit.Data.DataException: Abort due to constraint violation
    favorites.id may not be NULL ---> System.Data.SQLite.SQLiteException: Abort due to constraint violation
    favorites.id may not be NULL
    в System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
    в System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
    в System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
    в BLToolkit.Data.DbManager.ExecuteNonQueryInternal()
    --- Конец трассировки внутреннего стека исключений ---
    в BLToolkit.Data.DbManager.OnOperationException(OperationType op, Exception ex)
    в BLToolkit.Data.DbManager.ExecuteNonQueryInternal()
    в BLToolkit.Data.DbManager.ExecuteNonQuery()
    в Rsdn.Janus.DatabaseManager.InsertFavoritesLink(FavoritesLink link)
    в Rsdn.Janus.FavoritesManager.AddMessageLink(Int32 messageId, String comment, FavoritesFolder folder)
    в Rsdn.Janus.ForumDummyForm.AddToFavorites()
    в Rsdn.Janus.Framework.StripEventDispatcher.DispatchEvent(String eventId)
    в Rsdn.Janus.Framework.StripEventDispatcher.ClickHandler(Object sender, EventArgs e)
    в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
    в System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
    в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    в System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
    в System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
    в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    в System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
    в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    в System.Windows.Forms.Control.WndProc(Message& m)
    в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
    в System.Windows.Forms.ToolStrip.WndProc(Message& m)
    в System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
    в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    Спасибо!
    Re[8]: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 03.09.07 23:31
    Оценка:
    R>>
    1. В таблице "Статистика сообщений пользователя" в столбце Форум не отображается собственно название форума. Не знаю, связано ли это именно с SQLite... но вроде бы с FB было нормально.
      ДА>Не знаю, но после того как я исправил, то что далее столбец форум заполнен, может наведенка?

      Извеняюсь не туда посмотрел — это так и осталось. Причина в том что в некоторых случаях SQLite в запросе SELECT возвращает в названиях колонок вместе с квадратными скобками и соответственно BLToolkit при мапинге не находит нужных полей и в них остается пусто. Я конечно могу поправить запрос, но помоему надо что-то править на уровне BLToolkit-а, а иначе заманаешся запросы править.

      R>>
    ... << RSDN@Home 1.2.0 alpha rev. 738>>
    Бага
    От: Блудов Павел Россия  
    Дата: 17.09.07 07:31
    Оценка:
    Здравствуйте, serb, Вы писали:

    S>Скачал и запустил янус в первый раз Создал базу с скллайт и получил ошибку


    S>Rsdn.Janus.DBSchemaException: Ошибка на этапе реструктуризации базы:

    S>Error when prepared SqlDiff

    Это из-за того, что SQLite не поддерживает
    ATER TABLE ADD CONSTRAINT blablabla

    Это очень плохо, но не смертельно. Конструкции типа
    CREATE TABLE DbVariable
    ( Key VARCHAR(250)
    , Value VARCHAR(250)
    , PRIMARY KEY (Key)
    , CHECK(blabla)
    )

    он понимает. Т.е. нужно научить реструкторизатор генерировать таблицу с ограничениями за одну операцию.
    ... << RSDN@Home 1.2.0 alpha rev. 746>>
    Re[2]: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 17.09.07 11:28
    Оценка:
    Здравствуйте, serb, Вы писали:

    S>Скачал и запустил янус в первый раз Создал базу с скллайт и получил ошибку


    S>Rsdn.Janus.DBSchemaException: Ошибка на этапе реструктуризации базы:

    S>Error when prepared SqlDiff
    S> в Rsdn.Janus.DbsmManager.Restruct(IGenericServiceProvider serviceProvider)
    S> в Rsdn.Janus.Janus.Main()

    S>Ревизия 20070911-1207-r746


    Гляну вроде раньше работало (я же базу с нуля создовал)
    ... << RSDN@Home 1.2.0 alpha rev. 747>>
    Re[3]: RSDN@Home и SQLite
    От: Дьяченко Александр Россия  
    Дата: 18.09.07 14:01
    Оценка:
    Вобщем у меня базу создает (3 раза пробывал), выкладывай ошибку полностью может что будет ясно.
    ... << RSDN@Home 1.2.0 alpha rev. 747>>
    Re: Кто успел тот и съел
    От: Дьяченко Александр Россия  
    Дата: 19.09.07 11:04
    Оценка:
    Здравствуйте, Блудов Павел, Вы писали:

    БП>dwr.Count уменьшается на 1 с каждым вызовом dwr[j].Delete(). Правильно так

    БП>
    БП>protected void DeleteDdlCommandsByFilter(string filter)
    БП>{
    БП>    DataView dwr = _ddlCmdTable.DefaultView;
    БП>    dwr.RowFilter = filter;
    БП>    while (dwr.Count > 0)
    БП>        dwr[0].Delete();
    БП>    _ddlCmdTable.AcceptChanges();
    БП>}
    БП>


    У меня так и было по месту вызова этого метода. После меня уже поменяли.
    ... << RSDN@Home 1.2.0 alpha rev. 749>>
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.