У меня возникли некоторые проблемы при выполнении 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
, который уже имеет этот набор.В любом случае, я сделал явный толчок таким образом, и последующее извлечение все еще имеет ту же проблему.