Вытащить БД из героку не удается с Encoding :: CompatibilityError - PullRequest
2 голосов
/ 03 октября 2010

У меня возникли некоторые проблемы при выполнении db: pull из heroku обратно в мою локальную среду разработки.

Моя установка - MySQL (5.1.50) из установки MacPorts на локальном Rails 3 / Ruby 1.9.2 в среде Mac OS X Snow Leopard через RVM, и я много раз успешно выполнял heroku db:push на производственной площадке в Heroku.Однако на вторичной машине разработки с такой же настройкой, когда я пытаюсь вытащить Heroku DB обратно через heroku db:pull, я получаю следующую ошибку, после того как она на короткое время загружает информацию о таблице и индексе:

/Users/jschuur/.rvm/gems/ruby-1.9.2-p0/gems/sequel-3.15.0/lib/sequel/adapters/shared/mysql.rb:399:in `join': incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
    from /Users/jschuur/.rvm/gems/ruby-1.9.2-p0/gems/sequel-3.15.0/lib/sequel/adapters/shared/mysql.rb:399:in `multi_insert_sql'

Вот соответствующие драгоценные камни:

ruby-mysql (2.9.3)
sequel (3.15.0)
mysql2 (0.2.4)
taps (0.3.13)
heroku (1.10.6, 1.10.5, 1.10.0)

Полный список ошибок и список драгоценных камней здесь .

Та же самая ошибка происходит на моей основной рабочей машине BTW (однагде я делал успешную форму db: push to heroku).

Теперь я понимаю, что это в основном ошибка кодировки UTF8.FWIW, мой database.yml явно ссылается на UTF8:

development:
  adapter: mysql2
  encoding: utf8
  database: rails_dev_dbname
  pool: 5
  username: rails
  socket: /tmp/mysql.sock

Теперь интересно, если я создаю почти пустую БД с одной тестовой записью в ней, я могу нормально ее толкать / тянуть.Так что, очевидно, что-то в моем наборе данных не UTF8.Хотя там пока не так много данных, вполне возможно, что я скопировал какой-то текст, который содержал бы прикольную цитату или символ авторского права, который он задыхался.

Итак, вопрос в том, как мне обойтиЭта проблема?В документах Heroku упоминается добавление '? Encoding = utf' к URL-адресу вашей БД, когда вы выполняете push, но я предполагаю, что по умолчанию heroku db:push, который отправил данные в Heroku в первую очередь, использовался database.yml, который уже имеет этот набор.В любом случае, я сделал явный толчок таким образом, и последующее извлечение все еще имеет ту же проблему.

1 Ответ

2 голосов
/ 03 октября 2010

Я переключаю свою версию ruby ​​на 1.8.7 при использовании нажатий, чтобы нажимать и тянуть, когда я получаю ошибки, поэтому вы можете попробовать.

Если вы этим не пользуетесь, используйте RVM для управления версиями ruby ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...