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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

2回答

1424閲覧

mysqlってサーバー引っ越しの度にプログラムを書き換えないといけないんですか?

WeilSpinor

総合スコア170

MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2019/05/31 12:22

編集2019/05/31 12:24

サーバーを引っ越す際、引っ越し先のレンタルサーバー内のmysqlサーバーが、
データベース作成の際に、データベース名を自由に決められない場合があります。
たとえば、

JFOETID-[自由に命名できるセクション]

という風に、自分でつけた名前の先頭に、
他のレンタルサーバーのユーザーたちとの間の区別用の識別子(JFOETID)が必ず追加されてしまうようなものがあります。

このような事情で、
あるデータベースを新しいサーバーにエクスポートする際、
いままで使っていたデータベース名(たとえば、hoge)をそのまま使えないことがあり、
その場合は仕方なく別の名前(たとえば、JFOETID-hoge)になるわけですが、
そうすると、
そのデータベース(旧hoge)と連携しているプログラムを新しいサーバーで使うには、
データベース接続やSQLの処理に書かれたデータベース名の記述を新しいデータベース名に書き換えなければなりません。(hoge->JFOETID-hoge)

サーバーを変えるたびに、毎回いちいちプログラムを書き換えるのは、
手間と時間の無駄なうえ、
ミスタイプやバグを招くのではないか、
と思いました。

そして、

この問題を解決できる方法は既に誰かが考えて体系化しているはずだ

と思ったのですが、何か良い方法はないでしょうか?

それとも、これは仕方ないことなのでしょうか?

ご回答宜しくお願いします。

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

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

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

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

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

guest

回答2

0

接頭辞をつけるのがルールなのであれば接頭辞を設定ファイルに持っておけば良いと思います。
DBの接続情報も設定ファイルに持つのと同じですね。
接頭辞を付けなくても良いところもあると思うので[XXX-]とか[XXXX_]も含めて持っておくと良いのではと。
要は、書き換えが最小限で済む仕組みを構築します。

mysqlって

と仰っていますが、どのDBであっても等しく起こり得るのでMySQLだけのことではないと思います。

投稿2019/05/31 12:26

編集2019/05/31 12:48
m.ts10806

総合スコア80765

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

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

WeilSpinor

2019/05/31 12:49

自前のDB接続情報用の設定ファイルを作成する、ということでしょうか? たとえば、以下のような項目 DBUSER = "[接続先のデータベースサーバーのユーザー名]" DBPASSWORD = "[接続先のデータベースサーバーのパスワード]" DBNAME = "[使いたいデータベース名]" settouji = "[サーバー特有のデータベース名に課される接頭辞(必要なければ空文字列)]" etc... を持った設定ファイルを自前で作り、 必要に応じてこのパラメーターをいじる、という感じでしょうか? こういう環境変数みたいな設定ファイルって、オブジェクトとして作成するのが普通なんですかね? それとも関数を使ってrequire_onceとか?
m.ts10806

2019/05/31 12:55

何が普通かとかはないと思いますけど、どのような形になっても設定ファイルで持てれば良いかと。 PHPフレームワークLaravelであれば.envファイルを使っているし、 Javaなら.propertiesとかxmlとかJSONとか、要はブラウザからアクセス不可能で自分がやりやすい仕組みを作ればいいだけなので。 それこそご自由に。「書き換えが最小限で済む仕組み」です。 タイトルのような疑問が出てくるのはそういう仕組みを自分で構築できていないだけです。
guest

0

自己解決

調べたらやり方が出てきて解決しました。なんか、イディオムのようなものだったようです。

投稿2019/06/02 07:53

WeilSpinor

総合スコア170

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

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

m.ts10806

2019/06/02 09:34

私の回答冒頭でちゃんと「接頭辞」と書いてますが伝わらなかったでしょうか。 prefixと言った方が良かったでしょうか。イディオムよりもシステム的には一般的な表現です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問