web-dev-qa-db-ja.com

CiviCRMメジャーバージョンアップグレードで導入されたすべてのデータベーススキーマの変更を見つけるにはどうすればよいですか?

DrupalでCiviCRMを使用しています。サイトを新しいCiviCRMメジャーバージョンにアップグレードする場合、新しいバージョンで導入されたすべてのデータベーススキーマの変更を知っておくと非常に便利です。これにより、データベースフィールドを参照するカスタムコードを修正できます。

適切なケースは、4.3-> 4.4のcivicrm_contribution_recur.next_sched_contribution-> next_sched_contribution_dateです。

「データベースフィールドに直接アクセスするべきではありません。 CiviCRM API を使用する必要があります。誰かが言うのを聞きます。多くの場合、これが推奨されるアプローチですが、API v3はデータベース構造に非常に密接に関連しており、API呼び出しによって返されるフィールドはデータベースフィールド名を反映しているため、コードを修正する必要があります。

CiviCRMにとって本当に役立つリソースは、Drupalの n.xモジュールを(n + 1).xに変換する ドキュメンテーションと同等です。

4
davejenx

mysqldbcompare を使用して、変更を特定するための実行可能なアプローチを見つけました。 CiviCRM Wikiの開発者向けリソース->リファレンスシート-> データベースリファレンス にいくつかのページを追加しました。

データベーススキーマの変更:CiviCRM 4.4から4.5

データベーススキーマの変更:CiviCRM 4.5から4.6

CiviCRM Stack Exchange site が現在ベータ版であることに注意してください。この質問はそこに移動する必要がありますか?

2
davejenx

これを行う1つの方法は、新しいバージョンのCRM/Upgrade /ディレクトリを調べて、スキーマの変更を探すことです。ただし、これらは、変更が導入されたアルファまたはベータバージョンに応じて、複数のファイルに分散されます。 next_sched_contribution_dateの変更がこのファイルに導入されました:

civicrm/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl

4
davejenx

純粋な構造の観点からそれを行う簡単な方法は、次のようなmysqlスキーマ比較ツールを使用することです。

http://adamspiers.org/computing/mysqldiff/

ただし、すべての変更が反映されるわけではありませんが、ほとんどの変更が反映されると思います。自動化された方法でそれを行う方がずっといいです、IMO :)

4
Donald Lobo

別のオプションは、バージョン間でxmlスキーマを比較することです。 xmlスキーマファイルはtar.gzリリースでは出荷されず、gitでのみ出荷されるため、最もユーザーフレンドリーな方法とは言えませんが、出発点としては適しています。

あなたも試すことができます:

git log -w -p tag1..tag2 xml/schema

例えば:

git log -w -p 4.4.5..4.5.2 xml/schema

完璧ではありませんが、ある程度理解可能です。

4
bgm