2019/06/20 20:08 JST

Geeklog Japan Forums

最新のデータベースを、1.7.0 と 2.0.0 の両方から参照する方法について


状態: オフライン

cleverOne

Forum User
Active Member
登録日: 07/14/07
投稿数: 54
過去記事を読ませていただいたのですが、混乱していることもありご質問させていただきました。ご容赦ください。 既存サイトの運用(1.7.0)を続けながら、検証サイト(2.0.0)を構築する計画を進めています。 その際、"既存のデータベースをアップグレード"して、1.7.0 / 2.0.0 の両方から参照したい考えています。 [既存サイト]1.7.0 http://hogehoge.com/ [検証サイト] 2.0.0 http://sub.hogehoge.com/ ※サブドメインを設定 [データベース]1.7.0 で運用しているデータベースをアップグレードし、既存・検証サイトの両方で使いたい。 ※検証サイトでは記事の書き込みはしません。 この場合、2.0.0 を「新規インストール」した後に、どのようにして既存のデータベースをアップグレードし参照設定をすれば良いのでしょうか? それとも「新規インストール」ではなく「移行」スクリプトを走らせれば、既存のデータベースのアップグレードと 2.0.0 の導入・設定がおこなわれるのでしょうか? (「移行」スクリプトの動作内容や意味が把握しきれていません。すみません。) これとは逆に 2.0.0 構築後に 1.7.0 のテーブルをインポートして、1.7.0 から 2.0.0 のテーブルを参照するのが良いでしょうか。 ただ、この時、どのテーブルをインポートすれば良いのかが判断できていません。 <参考にさせていただいた記事の一部> https://www.geeklog.jp/forum/viewtopic.php?showtopic=14950 https://www.geeklog.jp/forum/viewtopic.php?showtopic=15952 ご教授いただけると幸いに存じます。 どうぞ、よろしくお願い申し上げます。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
1.7用にプラグインかなにかを開発していてそのプラグインが参照する特別に設計されたテーブルについてのご質問でしょうか。 その場合、 2.0.0用にテーブルを接頭子を1.7とは別に、たとえばgl200_ というようなテーブルにして同じDBにコピーしてアップグレードして動作確認ののち、データ参照部分はもとのgl_ にすると可能です。 該当のテーブルに、アクセス権などユーザーやグループの権限が付属している場合、 ユーザー権限が、運用中にいろいろ変わるようなら両方での運用は危険です。 データのアクセス権の設定で所有者、グループは、変わらない、変えないという前提であれば可能だと、おもいます。 1.7だけで操作。2.0版では当面閲覧だけ、ということなら、 データ部分をCRONで定期的に2.0のほうにコピーする、という方法もあると思います。 テーブルごとに、接頭子を変える方法は、lib-database.phpを参照してください。以下のように定義されています。
PHP Formatted Code
$_TABLES['access']              = $_DB_table_prefix . 'access';
$_TABLES['article_images']      = $_DB_table_prefix . 'article_images';
$_TABLES['blocks']              = $_DB_table_prefix . 'blocks';
・・・・
 
$_DB_table_prefix は、db-config.phpで指定された接頭子(デフォルトはgl_)です。 過去記事は、その後Geeklogの開発とともに参考にならず、混乱ばかりになってしまうことがあるので、Geeklog 1時代の記事は無視していただいたほうがよいです。Wikiのほうはメンテナンスしていますが、記事は過去にさかのぼって、状況や対策が変わった場合も内容を編集していません。 記事は必要なものだけはWikiに集約させています。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
もし、特別なテーブルではなく、記事や静的ページを、ということであれば、記事など多くのテーブルは2.0.0でテーブル構造が変わっているので、2.0.0から1.7.0の記事のテーブルを,残念ながら参照することはできません。

状態: オフライン

cleverOne

Forum User
Active Member
登録日: 07/14/07
投稿数: 54
Ivyさん。 早速のご回答をいただき感謝しております。 私の言葉足らずのところもありましたが、プラグイン開発によるところのご質問ではありません。 単に、1.7.0 の運用を続けながら別に 2.0.0 を導入して、稼働中の 1.7.0 のデータベースを参照(共有)したい。 だけれども、1.7.0 と 2.0.0 とでは、新しいテーブル名が追加され内部構造が変わっているところが見受けられたので、最新のデータベース構造にしてから 1.7.0 / 2.0.0 でテーブルの参照(共有)ができないかな?と考えた次第です。 同一サーバー上に 2.0.0 を導入する理由は、ローカル環境での検証が難しいほか、近い将来に 1.7.0 を 2.0.0 にする必要性もあるため、その動作検証とテーマ制作をおこなうために導入を計画しています。 このため稼働中の 1.7.0 側のデータベースを最新の構造にした後に、両方から参照できないかな~と思いご質問いたしました。 しかし、ご回答を拝読したところテーブルの参照(共有)は"そう簡単にはいかない"感じがしてきました。また、運用中の 1.7.0 側に何らかの影響が出てきそうな気もしてきて、直感的に止めた方が賢明だなと思うようになりました。 詳細なご回答をいただき大変恐縮しておりますが、このテーブルの参照(共有)の取り組みについては作業を中止することにしました。 もう1つ、ご質問があります。 2つめのご回答で疑問がでてきました。 > 記事など多くのテーブルは2.0.0でテーブル構造が変わっているので、2.0.0から1.7.0の記事のテーブルを,残念ながら参照することはできません。 記していただいた内容については理解しました。 では、2.0.0 未満をお使いの方が同一サーバー上に新たに 2.0.0 を「新規インストール」し、それまでの資産(記事など)を最新のテーブル構造で継続利用したい場合はどのうような手法でおこなえば良いのでしょうか? バックアップしておいた SQLファイルの内容の接頭子を修正して、最新のテーブルにインポートすれば良いのでしょうか? もしそうならば、このテーブルはインポートしちゃ駄目と言うのがあればご指導いただけると幸いです。 ちなみに、2.0.0 未満を利用中に 2.0.0 のインストーラーで「アップグレード」を選んだ時は、自動的に過去のテーブルは最新のテーブルに"変換"されるのですよね。 引き続き、よろしくお願い申し上げます。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
テーブルの参照(共有)は、相当やっかいはハックが必要なのでやはりやめたほうがよいですね。それよりデータベースを追加して、別ドメイン、または、サブドメイン、あるいはまたサブディレクトリで1.7 2.0を同時に独立したDBで運用したほうが良いです。お聞きした状況から、片方の変更がもうひとつのサイトに即座に自動反映 が必要ではないようですので。 同じサーバー上に複数Geeklogをインストールするときは、データベースも増やして、ひとつのサイトにひとつのデータベース というふうにすれば、前置子gl_のままいくつでもおけますし、データベースを増やせないのなら、前置子を変更して、gl2_ などにテーブル名を変更してインポートすれば問題ありません。 なお、おっしゃるように、旧システムのソースのかわりに、2.0.0のソースをすべてアップロードして /admin/install/ の「アップグレード」 を実行すると、データベースのテーブルは2.0.0のテーブル構造に自動的にアップグレードされて、2.0.0で動作するようになります。 2.0.0のアップグレードでは、ソースの上書きで実行してしまうと、不要になったソースが残っているとエラーになります。古いソースはバックアップをとったうえで、新しいGeeklogのファイルだけにしてアップグレードするとよいです。また、データベースはかならずバックアップを取っておいてください。 上記のようにすればまず問題はありませんが、アップグレードに失敗したら、アップグレードの途中で終わっていることもあるので、その場合は、データベースをまたもどして、問題を修正したうえで、再度アップグレードしてください。

状態: オフライン

cleverOne

Forum User
Active Member
登録日: 07/14/07
投稿数: 54
Ivyさま。 朝早くからご回答いただき、ありがとうございます。 同一サーバーに Geeklogを複数導入するなら、それ毎にデータベースを準備して運用するのがセオリーですね。(^^Wink 当方の環境では同一サーバー上で1つのデータベースしか利用できないので、テーブルの接頭子を変更して構築します。 その後、1.7.0 のバックアップ SQLファイルから 2.0.0 の最新データベースへインポートして試してみます。 上手くいけばイイな〜。 そして、時が来たら 1.7.0 を撤去して新たに 2.0.0 を導入したあと、サブドメインで稼働する検証用の 2.0.0 のデータベースを移設する流れで作業を進めてみます。 今回も勉強になりました。ありがとうございました。 久しぶりに書き込みをしたのですが、何か緊張してしまいましたw 今後ともよろしくお願いします。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
そうですね、ここはちょっと緊張しますよね。Facebookのグループもありますのでよろしければそちらへどうぞ。 接頭子を変更するのは、バックアップしたSQLをテキストエディターで開いて置換するだけ。あとはdb-config.phpで指定した gl_ を変更するだけ、ですので簡単ですよ。 ではまたなにかありましたらお気軽に Rolling Eyes

時刻はすべて JST , 現在の時刻は 08:08 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  ゲストユーザ投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック