0

CloudFoundryMicroでSinatraアプリを構築する練習をしています。このアプリはMySQLサービスを使用しています。Sinatraアプリから新しいデータベースを作成するにはどうすればよいですか。新しいデータベースは、データマッパーで構築したデフォルトのデータベースとは異なる情報を保持します

私は最初にmysql2gemを使おうとしました

require 'mysql2'
con = Mysql.new("#{hostname}", "#{username}", "#{password}", "#{dbname}")   
      rs = con.query("CREATE DATABASE #{$newDbName}")
con.close

上記のコードは私の開発者のマシンでうまく機能したので、クラウドで試してみようと思いました。ここで私は問題を抱えています:

require 'mysql2'
require 'json'
 svcs = JSON.parse ENV['VCAP_SERVICES']
 mysql = svcs.detect { |k,v| k =~ /^mysql/ }.last.first
 creds = mysql['credentials']
 user, pass, host, name = %w(user password host name).map { |key| creds[key] }

con = Mysql.new("#{host}", "#{user}", "#{pass}", "#{name}") 
      rs = con.query("CREATE DATABASE #{ $newDbName}")
con.close

アプリをプッシュして新しいデータベースを作成するプロセスを実行すると、アプリが「'dbsync/createdb.rb'をロード」しようとすると「内部サーバーエラー」が発生します。

誰かが私がこのエラーを受け取っている理由を説明できますか?または、この問題をさらにトラブルシューティングする方法

4

1 に答える 1

1

新しいデータベースを作成する権限がありません。ただし、本当にこれを行いたい場合は、VMC gem を使用して vcap / Cloud Foundry インスタンスに接続し、新しい MySQL サービスを作成してから、同じアプリケーションにバインドすることができます。

https://github.com/cloudfoundry/vmc/blob/master/lib/vmc/client.rbにある VMC コードベースのコメント付きサンプル コードを見てください。

于 2012-10-28T14:22:47.907 に答える