Как я могу преобразовать приложение PHP в Bluemix для использования базы данных SQL вместо базы данных mySQL?

Я следовал этому уроку: «Создайте и внедрите REST API в IBM Bluemix с PHP и MySQL

Учебник использует MySQL. Я хочу использовать службу базы данных SQL, которая использует DB2, я думаю. Учебник реализует API REST. Когда я пытаюсь сделать REST-вызов по этим ссылкам, я ничего не получаю взамен.

Например, вот как я использую REST API моего приложения Bluemix:

Я скачал исходный код по ссылке ниже и отредактировал manifest.yml дать ему уникальное имя и хост. Я также пытался редактировать index.php подключиться к службе базы данных SQL, а не к службе базы данных mySQL.

Мой репозиторий кода находится здесь: ввашвани | Продукты-апи.

После загрузки исходного кода в Bluemix я создаю таблицу в базе данных, используя следующий запрос:

CREATE TABLE products
(
id INT,
name VARCHAR(5),
price decimal(5,2)
);

Я также заполняю базу данных следующим запросом:

INSERT INTO products (id, name, price) VALUES
(1, 'Garden spade', 15.99),
(2, 'Cotton hammock', 54.50),
(3, 'Single airbed', 35.49);

Я привязываю базу данных к только что загруженному приложению (которое является исходным кодом из учебника). Но, как я сказал выше, когда я пытаюсь получить доступ к конечной точке REST, я получаю пустую страницу. Я думаю, что я должен видеть JSON в моем веб-браузере. Поэтому я думаю, что что-то не так с моей связью между моим приложением и базой данных.

в index.php файл, есть раздел, определяющий соединение с базой данных mySQL.

// 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:

{
"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:[email protected]:3307/d80979f54940b447ab178d6b2ea42a7f6"}
}
]
}

Учетные данные базы данных SQL:

{
"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:[email protected]:50000/SQLDB",
"password": "XXXXXXXX"}
}
]
}

Кажется, что учетные данные базы данных mySQL имеют атрибут name, который используется в индексе для ссылки на базу данных. Где в качестве учетных данных базы данных SQL есть свойство db. Так что я мог бы попытаться поиграть с этим в то же время.

Простите за длинный пост. Все это тоже новое для меня.

Приветствия.

1

Решение

Если вы хотите запустить его на Bluemix (через Cloud Foundry), вам понадобится PHP buildpack с поддержкой драйверов DB2. Этот должен работать: https://github.com/ibmdb/db2heroku-buildpack-php.

Рабочий образец Вот:

Совет: для устранения проблем, подобных этой, попробуйте cf logs "APP_NAME" --recent команда. Прочитайте больше Вот

2

Другие решения

Вам потребуется установить драйвер для механизма баз данных DB2 (который предоставляет службу SQLDB) для вашей среды PHP.

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

Затем вы можете следовать инструкциям, чтобы использовать правильный драйвер с новыми учетными данными для подключения к базе данных.

2

«Драйвер», который вы бы использовали, был бы «ibmdb2», а не «sqldb». Служба SQLDB в Bluemix на самом деле является IBM DB2, поэтому вам потребуется использовать драйвер ibmdb2.

Сказав, что я не верю, что eloquent (подсветка) поддерживает DB2, так что либо вам нужно написать собственный соединитель в подсветке, либо вы можете использовать что-то вроде доктрины с поддержкой DB2, как мне кажется.

1
По вопросам рекламы [email protected]