简体   繁体   English

使用ClearDB插件将使用MySQL的rails应用程序部署到Heroku

[英]Deploy a rails app using MySQL to Heroku using ClearDB addon

I have a Rails app called "enrollment_app" that initializes and populates all the tables in the database with a MySQL seed file. 我有一个名为“enrollment_app”的Rails应用程序,它使用MySQL种子文件初始化并填充数据库中的所有表。 I built the app, added some migrations and pushed my app to Heroku. 我构建了应用程序,添加了一些迁移并将我的应用程序推送到Heroku。 However, since Heroku uses Postgres, I need a way to make my MySQL database compatible with Heroku so I am using the ClearDB addon. 但是,由于Heroku使用Postgres,我需要一种方法让我的MySQL数据库与Heroku兼容,所以我使用的是ClearDB插件。

When I try to open the app though, I get the message: 当我尝试打开应用程序时,我收到消息:

Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

So, I checked the logs and see this error: 所以,我检查了日志并看到了这个错误:

PG::UndefinedTable: ERROR:  relation "enrollments" does not exist

I've been following along with this tutorial but apparently I don't know how to make ClearDB look like my local MySQL DB since I'm getting that error above. 我一直在关注这个教程,但显然我不知道如何使ClearDB看起来像我的本地MySQL数据库,因为我上面得到了这个错误。 How can I do the equivalent of rake db:seed the MySQL seed file and rake db:migrate to the production ClearDB database? 我怎样才能相当于rake db:seed MySQL种子文件和rake db:migrate到生产ClearDB数据库?

Updated - Gemfile: 更新 - Gemfile:

source 'https://rubygems.org'

gem 'rails', '4.2.1'
gem 'mysql2'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'bootstrap-sass', '~> 3.3.5'
gem 'bootswatch-rails'
gem 'ransack'
gem 'jquery-turbolinks'
gem 'kaminari'
gem 'bootstrap-kaminari-views'
gem 'jquery-ui-rails'
gem 'espinita'
gem 'mysqltopostgres', git: "https://github.com/maxlapshin/mysql2postgres.git"

group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'rspec-rails'
  gem 'launchy'
  gem 'pry'
  gem 'pry-nav'
  gem 'shoulda-matchers'
  gem 'factory_girl_rails'
  gem 'capybara'
  gem 'newrelic_rpm'
  gem 'poltergeist'
  gem 'database_cleaner'
end

group :production do
  gem 'rails_12factor'
end

This isn't an issue with ClearDB per se, it looks like you haven't fully divorced from the PostgreSQL defaults. 这不是ClearDB本身的问题,看起来你还没有完全脱离PostgreSQL默认值。 I'd check: 我检查一下:

  • is pg defined in your Gemfile? 是你的Gemfile中定义的pg it shouldn't be. 它不应该。 Instead ensure mysql2 is present. 而是确保mysql2存在。
  • Have you installed the Heroku ClearDB add-on for this app, and made it the default database your app will use? 您是否为此应用安装了Heroku ClearDB插件,并使其成为您的应用将使用的默认数据库? Have you uninstalled the Heroku Postgres database? 你卸载了Heroku Postgres数据库吗? See here for complete instructions. 请参阅此处获取完整说明。

Once your Heroku app can connect to the ClearDB database properly, you should be able to set up the database itself with no issues: 一旦您的Heroku应用程序可以正确连接到ClearDB数据库,您应该能够自行设置数据库而不会出现任何问题:

heroku run rake db:create
heroku run rake db:migrate
heroku run rake db:seed

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM