База данных SQLite 3 не читается должным образом

#ruby-on-rails #database #ruby-on-rails-3 #sqlite

#ruby-на-рельсах #База данных #ruby-on-rails-3 #sqlite

Вопрос:

Мне пришлось создать базу данных sqlite3 в моем приложении rails 3.1.1 вручную, преобразовать из базы данных mysql с помощью инструмента mysql2sqlite, а затем запустить:

 sqlite3 development.sqlite3 < mysql2sqlite_dump.sql
 

В любом случае, development.sqlite3 файл есть, и сервер запускается нормально, и все страницы загружаются нормально (никаких ошибок базы данных об отсутствующих таблицах или что-то в этом роде), но данные не считываются … как будто их там не было. Даже запуск Event.all , например, в консоли дает мне :

   Event Load (0.1ms)  SELECT "events".* FROM "events" 
 => [] 
 

Когда на самом деле должно быть несколько событий. Заглядывая в sqlite3 файл, я вижу, что вся информация там есть, но она просто не читается. Я опубликую часть файла базы данных, если кто-нибудь его запросит.

Мой вопрос таков: почему база данных не читается должным образом, и как я могу это сделать?

Спасибо.

Комментарии:

1. Итак, если вы sqlite3 development.sqlite3 можете выбрать из таблиц, и все есть, верно? Вы уверены, что Rails использует ваш development.sqlite3 файл, а не какой-либо другой файл базы данных SQLite?

2. Запуск select * from events; в консоли sqlite3 ничего не возвращает. Мой database.yml файл указывает на db/development.sqlite3 .

3. Хм. select * from sqlite_master Говорит ли вам что-нибудь проясняющее?

4. Этот скрипт выглядит устаревшим на несколько лет, сколько таблиц вам нужно перенести? Возможно, это будет проще в использовании mysqldump --compatible=ansi --complete-insert --compact , исправьте типы в таблицах СОЗДАНИЯ вручную, а затем отправьте их прямо в sqlite3 файл .

Ответ №1:

Что ж, кажется, я решил эту проблему. Проблема заключалась в том, что mysqldump (выполняемый внутри mysql2sqlite скрипта) отбрасывал, а затем создавал таблицы (по умолчанию), и это противоречило файлу схемы. Итак, я создал базу данных в соответствии с файлом схемы, а затем снова запустил скрипт с --no-create-info добавленной опцией for mysqldump , чтобы он вставлял только информацию.

Всем спасибо за помощь!