首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Bluemix中的PHP应用程序转换为使用SQL而不是mySQL数据库?

如何将Bluemix中的PHP应用程序转换为使用SQL而不是mySQL数据库?
EN

Stack Overflow用户
提问于 2015-05-08 07:05:46
回答 3查看 895关注 0票数 1

我一直在遵循这个教程:“使用PHP和MySQL在上构建和部署REST。”

本教程使用mySQL。我想我想使用,它使用DB2。本教程实现了REST。当我尝试使用这些链接进行REST调用时,我得不到任何回报。

例如,下面是如何使用Bluemix应用程序的REST:

  • http://products-api-db2-test2-5.mybluemix.net/v1/products.json
  • http://products-api-db2-test2-5.mybluemix.net/v1/products

我已经从下面的链接下载了源代码,并编辑了manifest.yml以给它一个唯一的名称和主机。我还尝试编辑index.php以连接到SQL服务,而不是mySQL数据库服务。

我的代码存储库在这里:vvaswani系列产品-api

在将源代码上载到Bluemix之后,我使用以下查询在数据库中创建一个表:

代码语言:javascript
复制
CREATE TABLE products 
 (
  id INT,
  name VARCHAR(5),
  price decimal(5,2)
  );

我还使用以下查询填充数据库:

代码语言:javascript
复制
INSERT INTO products (id, name, price) VALUES
 (1, 'Garden spade', 15.99),
 (2, 'Cotton hammock', 54.50),
 (3, 'Single airbed', 35.49);

我将数据库绑定到我刚刚上传的应用程序(这是教程中的源代码)。但是,正如我前面所说,当我尝试访问其他端点时,就会得到一个空白页。我想我应该在我的浏览器中看到JSON。所以我认为我的应用程序和数据库之间的连接有问题。

index.php文件中,有一个部分指定到mySQL数据库的连接。

代码语言:javascript
复制
// get MySQL service configuration from BlueMix
 $services = getenv("VCAP_SERVICES");
 $services_json = json_decode($services, true);
 $mysql_config = $services_json["mysql-5.5"][0]["credentials"];
 $db = $mysql_config["name"];
 $host = $mysql_config["host"];
 $port = $mysql_config["port"];
 $username = $mysql_config["user"];
 $password = $mysql_config["password"];

 // initialize Eloquent ORM
 $capsule = new Capsule;

 // use for BlueMix development
 $capsule->addConnection(array(
     'driver'    => 'mysql',
     'host'      => $host,
     'port'      => $port,
     'database'  => $db,
     'username'  => $username,
     'password'  => $password,
     'charset'   => 'utf8',
     'collation' => 'utf8_unicode_ci',
     'prefix'    => ''
 ));

我想我需要编辑这个,但我不太清楚如何编辑。我试过几样东西。例如,将$services_json["mysql-5.5"][0]更改为$services_json["sqldb"][0]。我还尝试将驱动程序从driver' => 'mysql'更改为'driver' => 'sqldb'

我认为证书可能很重要,所以就在这里。mySQL凭据:

代码语言:javascript
复制
{
   "mysql-5.5": [
     {
       "name": "mysql-338",
       "label": "mysql-5.5",
       "plan": "100",
       "credentials": {
         "name": "d80979f54940b447ab178d6b2ea42a7f6",
         "hostname": "198.11.234.66",
         "host": "198.11.234.66",
         "port": 3307,
         "user": "uyhDjPNyxI357",
         "username": "uyhDjPNyxI357",
         "password": "XXXXXXXX",
         "uri": "mysql://uyhDjPNyxI357:pZoFBeIIg0i16@198.11.234.66:3307/d80979f54940b447ab178d6b2ea42a7f6"
       }
     }
   ]
 }

SQL数据库凭据:

代码语言:javascript
复制
{
   "sqldb": [
     {
       "name": "SQL Database-78",
       "label": "sqldb",
       "plan": "sqldb_free",
       "credentials": {
         "port": 50000,
         "db": "SQLDB",
         "username": "user04128",
         "host": "75.126.155.153",
         "hostname": "75.126.155.153",
         "jdbcurl": "jdbc:db2://75.126.155.153:50000/SQLDB",
         "uri": "db2://user04128:dAxOPnUHTJ6G@75.126.155.153:50000/SQLDB",
         "password": "XXXXXXXX"
       }
     }
   ]
 }

mySQL数据库凭据似乎有一个名称属性,用于索引中引用数据库。其中,SQL数据库凭据具有db属性。所以我可以试着在这段时间里玩一玩。

很抱歉寄了这么长的邮筒。这一切我也是新的。

干杯。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-08 11:28:58

如果您想在Bluemix (通过Cloud )上运行它,您需要一个具有DB2驱动程序支持的PHP。这个应该能工作:https://github.com/ibmdb/db2heroku-buildpack-php

工作样本这里

提示:要解决这样的问题,请使用cf logs "APP_NAME" --recent命令。阅读更多这里

票数 2
EN

Stack Overflow用户

发布于 2015-05-08 10:43:28

您需要为您的DB2框架安装数据库引擎(它提供SQLDB服务)的驱动程序。

https://github.com/cooperl22/laravel-db2

然后,您可以按照说明使用正确的驱动程序和新凭据连接到数据库。

票数 2
EN

Stack Overflow用户

发布于 2015-05-10 10:18:58

您将使用的“驱动程序”将是“ibmdb2”,而不是“sqldb”。Bluemix中的SQLDB服务实际上是IBM DB2,因此您需要使用ibmdb2驱动程序。

话虽如此,我不相信雄辩的(说明)支持DB2,所以要么您需要在照明中编写您自己的连接器,要么您可以使用类似的理论,其中有DB2的支持,我相信。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30117789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档