質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

1537閲覧

デプロイする際のデータベース設定が分かりません

ranerane0101

総合スコア70

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/06/17 13:31

編集2021/06/19 15:36

HerokuにMySQLをデータベースに採用してプロジェクトをデプロイしようとしています。https://qiita.com/kata_kata_1997/items/973fc1f31795ebf6fcfa

↑のサイトを見てやっていましたが、疑問点・懸念点があったため質問させていただきます。

ローカルであるphpファイルには

$user = "秘匿"; $pass = "秘匿"; $recipe_name = $_POST['recipe_name']; $howto = $_POST['howto']; $category = (int) $_POST['category']; $difficulty = (int) $_POST['difficulty']; $budget = (int) $_POST['budget']; try{ $dbh = new PDO('mysql:host=localhost;dbname=db1;charset=utf8', $user,$pass); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO recipes(recipe_name,category,difficulty,budget,howto) VALUES (?, ?, ?, ?, ?)"; $stmt = $dbh->prepare($sql); $stmt->bindValue(1, $recipe_name, PDO::PARAM_STR); $stmt->bindValue(2, $category, PDO::PARAM_INT); $stmt->bindValue(3, $difficulty, PDO::PARAM_INT); $stmt->bindValue(4, $budget, PDO::PARAM_INT); $stmt->bindValue(5, $howto, PDO::PARAM_STR); $stmt->execute(); $dbh = null; echo "レシピの登録が完了しました。<br>"; echo "<a href='index.php'>トップページへ戻る</a>"; } catch (Exception $e) { echo "エラー発生:" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>"; die(); }

 このようにデータベース接続のために当たり前ですが書いています。
今回デプロイするのはローカルではなく、Herokuですので、

$user = $pass =

$dbh = new PDO('mysql:host=localhost;dbname=db1

このhost=
dbname=

heroku config | grep CLEARDB_DATABASE_URL CLEARDB_DATABASE_URL: mysql://******:******@us-cdbr-east-02.cleardb.com/heroku_dff14ec3ad68e70?reconnect=true //↓下記のデータが入ってる認識 CLEARDB_DATABASE_URL: mysql://ユーザー名:パスワード@ホスト名/データベース名?reconnect=true

 この時に出てきたHeroku用のユーザー名、パスワード、データベース名、ホスト名を記入しなければならないという認識であっていますでしょうか?
記事には

function dbConnect() { $dsn = 'mysql:dbname=DB名;host=ホスト名;charset=utf8'; $user = 'ユーザー名'; $password = 'パスワード'; $option = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); $dbh = new PDO($dsn, $user, $password, $option); return $dbh; }

このように書かれていたので、自分のPHPのデータベース接続のコードが少し異なっていたので不安になりました。

それと少し逸れるのですが、composerがインストールされていないとデプロイが出来ないと紹介されています。自分のプロジェクトRECIPESはC:\xampp\htdocs\Recipes

このようなディレクトリにあり、そのディレクトリで ```ここに言語を入力
composer -v

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

両方やってみればわかるのでは?
何が問題なのでしょうか。
(質問が投稿された当初から感じてはいましたが、全然何もされてないみたいなので回答しました)

プログラム側の接続設定が間違っていたところでエラーが
吐かれるだけでエラー参考に対応するだけの話です。
PHPの機能(今回ならPDO)をPHPマニュアルで確認して指定の仕方の妥当性を検証すればいいだけに思います。
1つのゴールに向かう道は1つだけではないです。
同じ機能でも引数を任意含めて複数受け入れるものがある以上、書き方は1つだけになりません。

それと少し逸れるのですが、composerがインストールされていないとデプロイが出来ないと紹介されています。

そのような趣旨の文章は当該記事に見当たりませんでしたが、モノ次第です。
composerがどういうものか分かっていれば明白な部分はあります。
composerによって導入されたパッケージに独自に変更入れてるならcomposerからだけでは出来ません。

むしろ、「必ずローカルで開発する」が前提なら、ローカルで開発したものをそのままアップロードしても良いとは思います。
composerだけでやりきらなきゃいけないかどうかもモノ次第です。
パッケージが参照している設定ファイルが更新されたり、バグ修正なんかの更新の場合は、updateコマンドを打った方が確実なのは確実です。
初回デプロイはローカルそのままでも良いとは思いますが、やはりモノ次第。

記事で紹介されているのはあくまでその記事を書いた人の環境がそうなっていたからでしょうね。

投稿2021/06/20 09:59

編集2021/06/20 10:03
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ranerane0101

2021/06/20 12:36

ー必ずローカルで開発する 今回のアプリづくりはデプロイをデータベースを用いて出来ることが就職活動をする上で技術の証明が出来るから、です。実際の就業を想定しての必ずローカル~、ということですか? ー両方やってみればわかるのでは? 何が問題なのでしょうか。 申し訳ないです。甚だもって理屈などなくて自分でどんどん先に進めるとどこが間違いで~が出来なかった、という問題解決の際の原因が分からなくなることが多く今回早計にも試して分かることを質問してしまいました。 ーcomposerがどういうものか分かっていれば明白な部分はあります。 そのとおり、どういうものか分かっておりません。調べます。すいませんでした。 ーローカルで開発したものをそのままアップロード ローカルで開発したもの、とはここではレシピアプリを作っていたのですが、edit.phpとかupload.phpとかform.phpとか、そういったファイルを「composerを入れずに」そのままということですか? ー初回デプロイはローカルそのままでも良いとは思いますが、 これも上と同様な意味ですか?この場合、そのままというのは、質問であったようにホスト名、データーベース名、パスワードなどはローカルではなく、Herokuに提案された値ということでしょうか。 浅学ですいません
m.ts10806

2021/06/20 12:44

謝ってほしいわけではないので、謝られると話が進みません。 (読んでてそこでプツプツ流れが切れるので話が頭に入らない) composerコマンドで導入されるのは結局PHPのプログラムです。 なので、ローカルで作ったものをvendor配下も含めて全部そのままアップロードしても「基本は」差し支えないという意味です。 ただそれもモノ次第なので、現状提示された内容だけでは何とも言えないという点、 参考にした記事を全部鵜呑みにするのではなく、自身の手元で検証して合致するかどうかは確認する必要があるという点 です。 それに、環境によって設定が違うようなものは.envなどで環境毎に自動で切り替えられるように、コード内にハードコーディングすることって現在はないと思います。 就職活動で技術力見せたいならそのあたりは考慮しておいた方が良いです。
ranerane0101

2021/06/23 06:15

生のPHPでやっているからか分かりませんが.envファイルは無いんですよね(Laravelであるのは知っています)。両方試せば?と仰られた片方(上記の方)は試しましたが、出来ませんでした。もう片方は試した方が分かりません。functionの方は一つのファイルで.envのようなデータベース接続の部分の役割を担うphpファイルとして書かれているという理解で大丈夫なのでしょうか?書籍で$passと$userはアプリのドキュメントルートより上の階層、xamppフォルダなどでdb_config.phpとして統一できる事は分かるのですが、、。
m.ts10806

2021/06/23 06:39

.env(Dotenv)はLaravelの仕組みではないですよ。それはそれでそういうライブラリです。 composer使う時点で「素のPHP」からは外れるのでお間違えのないよう。 >functionの方は一つのファイルで.envのようなデータベース接続の部分の役割を担うphpファイルとして書かれているという理解で大丈夫なのでしょうか? functionは1つのメソッドでファイルではないですよね。 .envはコメントに書いたように環境設定ファイルです。 浅学はいいとして、絶対的なキーワードが出てきてるのでまず検索して多少は理解されてからのほうが話ができます。 >書籍で$passと$userはアプリのドキュメントルートより上の階層、xamppフォルダなどでdb_config.phpとして統一できる事は分かるのですが、、。 PHPにハードコーディングしてしまうとデプロイしたあとにプログラムを書き換える手間が発生しますし、バージョン管理から外すとか、アプリを手動でアップロードするなど注意点が増えます。 手順が増えるとそれだけ不具合やミスのリスクが高まるので設定ファイルとしての外出しが望ましいです。 もちろんコード内に「環境毎の設定」をifで分岐かけてズラズラ書くのは古いしナンセンスです。 ところで、 >composerがインストールされていないとデプロイが出来ないと紹介されています。 こちらは記事のどこに書いてありますか?回答に書いたとおり私の目では見当たりませんでした。 どこを見てそう解釈したのかは知りたい。
ranerane0101

2021/06/23 07:19 編集

>4.ライブラリの追加 デプロイする前にフォルダの中に「composer.json」「composer.lock」「Procfile」がきちんと入っているか確認する。 もし入っていない場合は、フォルダ内にこれらのファイルを追加する。 ここです。composerについて全然知らなかった質問時にはcomposerフォルダの中にcomposer.jsonとcomposer.lockファイルが必要なのだなと勝手に思い込んでしまっていました。functionについてはメソッドというのは理解できています。
m.ts10806

2021/06/23 07:29

んー。コメント見る限りでは今でも本当に理解してるかは測りかねる部分はあり。 ひとまず、Herokuのスターターガイド読んでみてはいかがでしょう。 個人記事よりも理解できる、もしくは理解すべき内容なのでは。 言語ごとにあるので丁寧で優しい内容になっていると思います。(ただ、それぞれの機能やツールをきちんと理解できてる前提。インフラ面もあるので) いずれにしても、環境毎に違う設定をハードコーディングする日常からは早めに脱すべきでしょうね。
ranerane0101

2021/06/24 11:20

理解できませんでした。私もそう思います
guest

0

自己解決

各ファイル、ハードコーディングする形で実装できました。ローカルでのデータベース接続の設定を本番環境仕様にしました。

投稿2021/07/05 06:42

ranerane0101

総合スコア70

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問