Урок 12: Ошибка при открытии базы syntax error (SQ Lite3::SQLException)

[Д] Дмитрий, 21 июля 2016, 19:51 , 3 подписчика

Не работает скрипт read.rb Можно посмотреть только help(-h) На всё остальное, реакция:

C:\rubytut2\lesson6\notepad1>ruby read.rb
C:/Ruby22/lib/ruby/gems/2.2.0/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `initialize': near "rowid": syntax error (SQ
Lite3::SQLException)
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `new'
        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `prepare'
        from C:/rubytut2/lesson6/notepad1/post.rb:52:in `find'
        from read.rb:33:in `<main>'

В общем ругает

result = Post.find(options[:limit], options[:type], options[:id])

Пробовал с вашим исходником, тоже самое.

Обсуждение (7)


Michael Butlitsky Учитель

[M]

У тебя что-то с базой наверное, сделай дамп (в меню утлилиты для firefox найди что-то про экспорт), приложи его сюда.

И опиши как создавал базу.


[Д]

1. Базу создавал как на видео.

Новая база данных ==> сохранил в папку с проектом ==> создал новую таблицу posts и все необходимые поля. Затем через new_post.rb добавил: (заметку, ссылку и задачу).

2. Если ты имел в виду (Экспорт таблицы) то здесь в вкладке CLS в первом окне - Поля разделяются, метка стоит(запятой (,))

Во втором окне - Поля включают, метка (двойные кавычки("),в случае необходимости(Стандарт))


Michael Butlitsky Учитель

[M]

Приложи сам sqlite файл.

И вообще при ошибках прикладывай всегда архив со всеми файлами ровно в том виде, как появилась ошибка.


[Д]

Полный архив.


Вадим Венедиктов Учитель

[В]

Дим, всё нормально с твоей базой. Это у нас в программе использовалось старое поведение ruby.

Перелазил исходники в материалы урока: вот ссылка.

Работает с твоей базой


[Д]

Новый исходник, post.rb строки 113-114 statement.close db.close А нельзя здесь закрыть только db? Он разве автоматически не закроет и statement? Они же вроде связаны друг с другом, или это будет неправильно?


Michael Butlitsky Учитель

[M]

Можно ковыряться в исходниках и найти, что стейтменты БД закроет сама, например.

А потом напороться, что в другой БД это не работает.

А можно один раз себя приучить за собой закрывать ресурсы и спокойно жить :)