Как вытащить данные heroku в локальную базу данных SQLite3?Встречаться с проблемами - PullRequest
6 голосов
/ 15 сентября 2010

Я пытаюсь сделать локальное резервное копирование данных из моего приложения Rails, которое развернуто в Heroku и сталкивается с проблемами. Я следовал инструкциям здесь: http://docs.heroku.com/taps и установил Taps.

Я получаю два типа ошибок. Я создал базу данных SQLite локально и попытался получить данные с помощью этой команды:

(sudo) heroku db: pull sqlite: //Users/username/folder/testbackup.db

или

(sudo) heroku db: pull sqlite: // имя пользователя: password@localhost/Users/username/folder/testbackup.db

но в любом случае я получаю это:

Не удалось подключиться к базе данных: Sequel :: DatabaseConnectionError -> SQLite3 :: CantOpenException: не удалось открыть базу данных: не удалось открыть файл базы данных

В качестве альтернативы я попытался позволить Taps автоматически определять базу данных разработки в моем приложении и переписывать ее, хотя это не совсем то, что я хотел. Тогда я начинаю получать ошибки, такие как:

/ opt / local / lib / ruby ​​/ site_ruby / 1.8 / rubygems.rb: 777: в report_activate_error': RubyGem version error: sequel(3.15.0 not ~> 3.13.0) (Gem::LoadError) from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:211:in активировать ' из /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1056:in `gem ' из /Library/Ruby/Gems/1.8/gems/taps-0.3.10/bin/schema:4

и в конечном итоге

/ Система / Библиотека / Каркасы / Ruby.framework / Версии / 1.8 / usr / lib / ruby ​​/ gems / 1.8 / gems / sqlite3-ruby-1.2.4 / lib / sqlite3 / errors.rb: 62: в ` check ': SQLite3 :: SQLException: первичный ключ должен быть уникальным (Sequel :: DatabaseError)

Заранее огромное спасибо, очень важно, чтобы я начал резервное копирование этих данных как можно скорее!

Ответы [ 2 ]

10 голосов
/ 16 сентября 2010

Несколько вопросов.Во-первых, ваша строка соединения сиквела неверна.Попробуйте

heroku db:pull sqlite:///Users/username/folder/testbackup.db

Если вы по-прежнему получаете исключение, это может быть связано с проблемой разрешения, поэтому убедитесь, что вы можете записать по этому пути.Версия тапов требует Sequel 3.13.0, а вы уже активировали 3.15.0.Вам нужно либо использовать 3.13.0, либо отредактировать спецификацию гема taps, чтобы использовать 3.15.0.

PRIMARY KEY должен быть уникальным - исключение SQLite.Без полной обратной трассировки и кода трудно догадаться, почему это происходит.

0 голосов
/ 19 июня 2013

С проблемой SQLite3::SQLException: PRIMARY KEY must be unique (Sequel::DatabaseError) я видел ее, когда данные записываются в базу данных heroku, пока идет процесс извлечения. Кажется, работает, если я гарантирую, что нет никакой активности на героку. Это ненаучный и, возможно, чисто случайный подход, но, похоже, он мне подходит.

...