我正在练习在 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'”时,我收到“内部服务器错误”
谁能解释一下为什么我会收到这个错误?或者我如何进一步解决这个问题
最佳答案
您无权创建新数据库。但是,如果您确实想这样做,则可以使用 VMC gem 连接到 vcap/Cloud Foundry 实例并创建新的 MySQL 服务,然后将其绑定(bind)到同一应用程序。
查看 VMC 代码库中带注释的示例代码 https://github.com/cloudfoundry/vmc/blob/master/lib/vmc/client.rb
关于mysql - 如何从 Cloudry Foundry 中的 Sinatra 应用程序内部创建新的 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13102670/