0

我正在练习在 Cloud Foundry micro 上构建 Sinatra 应用程序。这个应用程序正在使用 MySQL 服务。我想知道如何从我的 Sinatra 应用程序创建一个新数据库。新数据库将保存与我使用数据映射器构建的默认数据库不同的信息

我首先尝试使用 mysql2 gem

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 回答