mysql - 如何从 Cloudry Foundry 中的 Sinatra 应用程序内部创建新的 MySQL 数据库?

标签 mysql sinatra cloud-foundry

我正在练习在 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/

相关文章:

mysql - 如何在 MySQL 中选择包含多个值的行?

ibm-cloud - Bluemix 定制服务经纪人

monitoring - 是否可以为 Cloud Foundry 应用程序使用 logmet 服务?

ruby - 如何使用 sinatra session

mysql - 为什么我的 Spring Batch 任务使用相同的 JOB_INSTANCE_ID 启动多个作业执行?

javascript - 如何将动态添加的内容存储到数据库

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException :

mysql - 如何从表中获取最新日期数据

ruby - 如何进行真正简单的 Sinatra LDAP 身份验证?

ruby - 如何在 Heroku 上托管的 Sinatra 应用程序中设置 HTTP 响应(缓存) header