2

Joomla の特定のテーブルにいくつかの新しい列を追加しようとしています。これらの修正を開発から運用に移行する必要があるため、これをクリーンな方法で実行しようとしており、ファイルシステムを介して更新します。

これに関するいくつかのチュートリアルに従い、次のことを行いました。

フォルダー updates/sql を作成し、新しいバージョン (1.5) で新しい sql ファイルをその中に入れました。xml ファイルのバージョン番号を変更しました。バックエンドでキャッシュを更新しました。

使用したコードは次のとおりです。

私のバージョン:

<version>1.5</version>

更新ノード:

<update>
        <schemas>
            <schemapath type="mysql">sql/updates/mysql</schemapath>
            <schemapath type="sqlsrv">sql/updates/sqlsrv</schemapath>
            <schemapath type="sqlazure">sql/updates/sqlazure</schemapath>
        </schemas>
</update>

SQL ファイル:

ALTER TABLE `#__mycomponent` ADD `field` VARCHAR(255);

データベースに対してクエリを直接テストしたところ、うまくいきました。

4

1 に答える 1

3

簡単な答え - Joomla! の DB 移行ツールは、Component Manager を介して新しいコンポーネントをアップロードした後にのみ実行します。$_REQUESTごとに移行をチェックするわけではありません。これはあなたの質問が示唆するものです。

より長い答え

コンポーネント マネージャを介してアップグレードを実行してください。ファイルを上書きするだけでは、Joomla の移行プロセスは開始されません。#__schemas テーブルでコンポーネントの ID を確認すると、対応するデータベース スキーマ バージョン # が表示されます。そのバージョンがまだ増分されていない場合、移行は適用されていません。

問題の一部は

私はこれをきれいな方法でやろうとしています、ファイルシステムを介して更新します

私はあなたに同意しますが、それはクリーンな方法です: Joomla! Joomla! のことをしてほしい。仕方 ;-)

Joomlaに関する重要な注意事項!SQL ファイル

SQL ファイルには C スタイルのコメント ( # comment here) を含めることはできず、このようなコメントを含める必要があります-- comment here自分のコードのデバッグに数時間を費やし、データベース スキーマの移行が失敗した場所を特定するために約 25 回アップグレードを再実行する必要がありました。

コメントは/* Comment */スタイル構文をサポートしているかもしれませんが、私はまだそれを広範囲にテストしていません。YMMV。

于 2013-12-13T20:29:11.227 に答える