「データベーススキーマの確認」の版間の差分

提供:MoodleDocs
移動先:案内検索
(done.)
 
(同じ利用者による、間の18版が非表示)
1行目: 1行目:
{{Installing Moodle}}
{{Moodleのインストール}}


作成中です - [[利用者:Mitsuhiro Yoshida|Mitsuhiro Yoshida]]
あなたのMoodleサイトを過去に複数のバージョンに渡ってアップグレードしている場合、データベーステーブル定義 (スキーマ) に関して、新しく作成される空のMoodleサイトとの差異が生じている可能性があります。これは小さなエラーまたはアップグレードスクリプト内の見落としによって発生します。これらの差異の多くはトラブルを発生させることはありませんが、いくつかは未知または予想外のエラーを発生させる可能性があります。たとえば、フィールドにデフォルト値が追加されたにも関わらず、デフォルト値の存在を前提としてアップグレードスクリプトコードに反映されていない場合、期待どおりに動作しない可能性があります。
 
あなたのMoodleサイトを複数のバージョンに渡ってアップグレードしている場合、データベーステーブル定義 (スキーマ) において、新しく作成される空のMoodleサイトとの差異が生じている可能性があります。これは小さなエラーまたはアップグレードスクリプト内の見落としによって発生します。これらの差異の多くはトラブルを発生させることはありませんが、いくつかは未知または予想外のエラーを発生させる可能性があります。たとえば、フィールドにデフォルト値が追加されたにも関わらず、デフォルト値の存在を前提としてアップグレードスクリプトコードに反映されていない場合、期待どおりに動作しない可能性があります。


アップグレード後の解決方法 (または、アップグレード失敗時の解決方法) は、アップグレードなしで新しく作成されたサイトと実運用サイトに'''完全に'''同じコードを使用して比較することです。これを実現する方法は数多くありますが、この記事ではUnixコマンドラインを使用したシンプルな方法を説明します。
アップグレード後の解決方法 (または、アップグレード失敗時の解決方法) は、アップグレードなしで新しく作成されたサイトと実運用サイトに'''完全に'''同じコードを使用して比較することです。これを実現する方法は数多くありますが、この記事ではUnixコマンドラインを使用したシンプルな方法を説明します。
41行目: 39行目:
         ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='To store backup configuration variables';
         ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='To store backup configuration variables';


The file may have lots of blocks of changes. The - lines show lines to be taken out and the + lines the ones to replace them (from the production to the clean). So here, the int has been replaced with a bigint and the key name changed. Both of these, technically, should have been changed at some point by upgrade scripts but have been missed. In this case they are unlikely to affect the operation of Moodle.
ファイルには多くの変更されたブロックがあります。「-」の行は取り除かれた行であり、「+」の行は取り除かれた行に対して (実運用サイトからクリーンインストールへと) 置換された行です。そしてここでは、「int」が「bigint」と置換され、キー名が変更されています。これらに関して、技術的にはある時点でアップグレードスクリプトによりアップグレードされるべきですが、省略されています。この場合、Moodleの動作に影響しないと考えられます。


===Too many changes to track manually?===
===手動で追うには、変更点が多過ぎますが?===


You can also use database management programs to synchronize old and new Moodle databases.
あなたは旧および新Moodleデータベースを同期するため、データベース管理プログラムを使用することもできます。


For example [http://wb.mysql.com/ MySQL Workbrench] for MySQL databases.
例えば、MySQLデータベースには[http://wb.mysql.com/ MySQL Workbrench]があります。


This is very useful, if You have a lot of changes.
あなたが多くの変更を実施している場合、これは非常に有用です。


If you can work a Unix/Linux command line the Python script [http://schemasync.org/ Schema Sync] provides a quick and simple way to generate all the commands to update your database.
あなたがUnix/Linuxコマンドラインを使用できる場合、[http://schemasync.org/ Schema Sync]というPythonスクリプトを使って、データベースを更新するコマンドすべてを素早く簡単に生成することができます。


==Should I worry?==
==心配する必要がありますか?==


Changes in field types (as long as they are compatible) and key name changes seem to be the common issues but '''should''' not cause problems. Things to look out for would be along the lines of missing fields and changes to default values.
フィールドタイプの変更 (互換性のある限り) およびキー名の変更には一般的な課題はありそうですが、問題が発生することはありません。
注意すべき点は不明なフィールドの行およびデフォルト値への変更です。


If you are about to upgrade to Moodle 2.0 you should be more concerned. In order for the upgrade to proceed smoothly it is a very good idea to correct these problems.
あなたがMoodle 2.0にアップグレードしようと考えている場合、さらに心配すべきでしょう。アップグレードをスムーズに進めるには、まずこれらの問題を解決した方が良いでしょう。


== 関連情報 ==
== 関連情報 ==


* The missing indexes report in ''SiteAdmin->Misc->XMLDB editor->Check Indexes''
* 「サイト管理->開発->XMLDBエディタ->インデックスをチェックする」の不明なDBインデックスレポート
* [http://moodle.org/mod/forum/view.php?id=45 Moodle Databases Forum]
* [http://moodle.org/mod/forum/view.php?id=45 Moodleデータベースフォーラム] - 英語


[[en: Verify_Database_Schema]]
[[en: Verify_Database_Schema]]

2012年6月11日 (月) 16:27時点における最新版


あなたのMoodleサイトを過去に複数のバージョンに渡ってアップグレードしている場合、データベーステーブル定義 (スキーマ) に関して、新しく作成される空のMoodleサイトとの差異が生じている可能性があります。これは小さなエラーまたはアップグレードスクリプト内の見落としによって発生します。これらの差異の多くはトラブルを発生させることはありませんが、いくつかは未知または予想外のエラーを発生させる可能性があります。たとえば、フィールドにデフォルト値が追加されたにも関わらず、デフォルト値の存在を前提としてアップグレードスクリプトコードに反映されていない場合、期待どおりに動作しない可能性があります。

アップグレード後の解決方法 (または、アップグレード失敗時の解決方法) は、アップグレードなしで新しく作成されたサイトと実運用サイトに完全に同じコードを使用して比較することです。これを実現する方法は数多くありますが、この記事ではUnixコマンドラインを使用したシンプルな方法を説明します。

  • アップグレードを完了します。
  • 以下のコマンドを使用して、あなたが直前にアップグレードしたサイトからデータベーススキーマを作成してください:
   mysqldump -d -u root -p myproductiondb >production.schema
  • あなたの実運用サイトのデータベースのコードを新しい (ウェブアクセス可能な) ロケーションにコピーしてください (必ず、同じバージョンにしてください)。
  • インストールインストラクションに従って、新しいサイトのために空のデータベースおよびmoodledataエリアを作成してください。
  • 新しいデータベースおよびロケーションを指定するため、config.phpを編集してください。または、config.phpを削除して、インストールスクリプトが自動作成する設定情報を使用してください。
  • config.php (必要であれば) およびデータベースを作成するため、インストールスクリプトを実行してください (この段階で、adminおよびサイト値は重要ではありません)
  • 下記のコマンドを使って、あなたの新しいサイトからデータベーススキーマを作成してください:
   mysqldump -d -u root -p mycleandb >clean.schema
  • 差異を調べるため、下記のコマンドを実行してください。
   diff -u production.schema clean.schema >db.diff

ここで差異を閲覧するため、あなたの好きなエディタを使用して「db.diff」ファイルを開くことができるようになります。

注意: 上記内容はMySQLデータベースのみに適用されます。他のデータベースには、恐らくスキーマのみをダンプする同様の機能が実装されていると考えられます。例えば、PostgreSQLには pg_dump というコマンドがあります。その他の議論に関しては、他のデータベースにも適用できます。

diffファイルを読み解く

最初に以下 (実際の) 例です:

    --
    -- Table structure for table `mdl_backup_config`
       @@ -129,11 +93,11 @@
        DROP TABLE IF EXISTS `mdl_backup_config`;
        CREATE TABLE `mdl_backup_config` (
   -  `id` int(10) unsigned NOT NULL auto_increment,
   +  `id` bigint(10) unsigned NOT NULL auto_increment,
      `name` varchar(255) NOT NULL default ,
      `value` varchar(255) NOT NULL default ,
       PRIMARY KEY  (`id`),
   -  UNIQUE KEY `name` (`name`)
   +  UNIQUE KEY `mdl_backconf_nam_uix` (`name`)
        ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='To store backup configuration variables';

ファイルには多くの変更されたブロックがあります。「-」の行は取り除かれた行であり、「+」の行は取り除かれた行に対して (実運用サイトからクリーンインストールへと) 置換された行です。そしてここでは、「int」が「bigint」と置換され、キー名が変更されています。これらに関して、技術的にはある時点でアップグレードスクリプトによりアップグレードされるべきですが、省略されています。この場合、Moodleの動作に影響しないと考えられます。

手動で追うには、変更点が多過ぎますが?

あなたは旧および新Moodleデータベースを同期するため、データベース管理プログラムを使用することもできます。

例えば、MySQLデータベースにはMySQL Workbrenchがあります。

あなたが多くの変更を実施している場合、これは非常に有用です。

あなたがUnix/Linuxコマンドラインを使用できる場合、Schema SyncというPythonスクリプトを使って、データベースを更新するコマンドすべてを素早く簡単に生成することができます。

心配する必要がありますか?

フィールドタイプの変更 (互換性のある限り) およびキー名の変更には一般的な課題はありそうですが、問題が発生することはありません。 注意すべき点は不明なフィールドの行およびデフォルト値への変更です。

あなたがMoodle 2.0にアップグレードしようと考えている場合、さらに心配すべきでしょう。アップグレードをスムーズに進めるには、まずこれらの問題を解決した方が良いでしょう。

関連情報