前提・実現したいこと
sinatraでDB(mysql)を使用したアプリを作成してローカル環境では完成しました。
それをherokuにpushしてwebアプリとして機能させたいです。
発生している問題・エラーメッセージ
前提としてClearDB MySQLはherokuアプリにインストール済みです。
最初はherokuにpushして、正常に表示されていたのですが、DBを使用するページに遷移したところ
mysql2::Error::ConnectionError
上記のエラーが発生していました。
なのでheroku config から
mysql2://[username]:[password]@[hostname]/[db_name]?reconnect=true
heroku config:add DB_NAME="[db_name]"
heroku config:add DB_USERNAME="[username]"
heroku config:add DB_PASSWORD="[password]"
heroku config:add DB_HOSTNAME="[hostname]"
heroku config:add DB_PORT="3306"
上記をそれぞれ設定すると
Internal Server Error
@ #ActiveRecord::StatementInvalid:0x00007f21900eaf48
該当画面でこのエラーに変わりました。
そのため、恐らくheroku上でDBには接続できているがテーブルが無いので機能しないと思っています。
以上の点からherokuのClearDB MySQL にテーブルを作成したいのですがその方法がまったくわかりません。
railsの参考は大量にでてきたのですが、使用したいのはsinatraアプリです。
ツールから接続できるのか、herokuコマンドなのか、rakeを使うのか、それぞれ試してはみたのですがうまくいきません。
DBを使用しないページはheroku上で正常に表示されているので、テーブルさえ作れれば…
と思っているのですが発想自体が間違えているのでしょうか。
回答よろしくお願いいたします。
該当のソースコード
require 'sinatra' require 'sinatra/reloader' require 'active_record' require 'mysql2' # -----DB接続情報 ActiveRecord::Base.establish_connection( :adapter => 'mysql2', :encoding => 'utf8', :database => '[db_name]', :username => '[username]', :password => '[password]', :host => '[hostname]', :port => '3306' ) class User < ActiveRecord::Base self.table_name = 'texts' end … get '/test' do @value = User.all end
あなたの回答
tips
プレビュー