4

magento を 1.4.0.1 から 1.7.0.2 にアップグレードしています。最初はいくつかのエラーがありました。それらを修正した後、アップグレードは 5 時間実行され、完了しません。エラーは表示されません。なぜそれが起こっているのですか?

4

5 に答える 5

9

最近、クライアントのマジェントを V1.4 から V1.7.2.0 にアップグレードし、次の手順に従いました。

  1. 次のテーブルを除いて、ライブ データベース バックアップを zip 形式で収集します。

    • 「log_customer」</li>
    • 「log_quote」</li>
    • 「log_summary」</li>
    • 「log_url」</li>
    • 「log_url_info」</li>
    • 「log_visitor」</li>
    • 「log_visitor_info」</li>

    「log_visitor_online」</p>

  2. 圧縮されたバックアップ データベースを、独自のファイル システムの任意のフォルダーに解凍します。

  3. ローカルの WAMP / XAMPP を起動し、Web アプリ「phpMyAdmin」を使用して、テスト データベース「test_something」または任意の名前を作成します。

  4. コマンド プロンプト ウィンドウを開き、「mysql」と入力して MySQL コマンド プロンプトを起動します。

  5. コマンドプロンプトを使用して、解凍したデータベースをテストデータベースにインポートします。これにより、エラーが発生せずにはるかに高速になります。

  6. インポートが成功したら、phpMyAdmin から「DB Changes.txt」ファイルに記載されている SQL を実行します。

  7. ローカルの WAMP / XAMPP で新しい Magento v1.7.2.0 を抽出し、古いライブサイト データを含むテスト データベースを使用して、この Magento のインストールを開始します。

  8. Magento のインストールが正常に完了したら、コマンド プロンプトを使用して、新しいアップグレードされたデータベースを zip 形式でエクスポートおよびダンプします。これにより、エラーが発生することなく、はるかに高速になります。

  9. 何もインストールせずに、新しく圧縮された Magento を抽出するか、v1.7.2.0 の新しく解凍された Magento をライブ サーバーのファイル システムにアップロードします。

  10. この圧縮されたデータベースをライブ サーバーのファイル システムにアップロードし、ライブ サーバーの PuTTY を開きます。

  11. ローカル WAMP / XAMPP の「app/etc/local.xml」Magento ファイルのコピーをアップロードして、ライブ Magento の「app/etc/local.xml」ファイルを置き換えます。ライブ サーバーにアップロードする前に、新しいライブ サーバーに従って、このファイルのすべての DB 資格情報を変更することを忘れないでください。

  12. ポイント 14 が完了するまで、ライブ Web サーバーの Web ブラウザーから Magento を参照しないでください。

  13. PuTTY コマンドを使用して、圧縮されたデータベースを抽出し、ライブ Web サイトの新しいデータベースにインポートします。

  14. インポートが成功したら、「path」列の値が「%base_url%」の「core_config_data」データベース テーブルを検索します。「値」列のすべての値を、ライブ サイトの完全な URL「http://www.livesite.com/」に置き換えます。「index.php」は言及しません。

  15. テーマとその関連ファイルを新しいサーバーのファイル システムにアップロードします。

  16. 拡張機能/モジュールをアップロードして、互換性を確認してください。

  17. システム構成で必要なモジュールを構成するのは、管理パネルからであることを確認してください。

    DB Changes.txt は次log_customerの とおり log_idです 。 -00-00 00:00:00', datetime DEFAULT NULL, smallint(5) unsigned NOT NULL, PRIMARY KEY ( ), KEY ( ) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Customers log information';visitor_idcustomer_idlogin_atlogout_atstore_idlog_idIDX_VISITORvisitor_id


    --

    -- テーブルのテーブル構造log_quote

    CREATE TABLE IF NOT EXISTS log_quote( quote_idint(10) unsigned NOT NULL DEFAULT '0', visitor_idbigint(20) unsigned DEFAULT NULL, created_atdatetime NOT NULL DEFAULT '0000-00-00 00:00:00', deleted_atdatetime DEFAULT NULL, PRIMARY KEY ( quote_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Quote log data';


    --

    -- テーブルのテーブル構造log_summary

    CREATE TABLE IF NOT EXISTS log_summary( summary_idbigint(20) unsigned NOT NULL AUTO_INCREMENT, store_idsmallint(5) unsigned NOT NULL, type_idsmallint(5) unsigned DEFAULT NULL, visitor_countint(11) NOT NULL DEFAULT '0', customer_countint(11) NOT NULL DEFAULT ' 0', add_datedatetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY ( summary_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='要約ログ情報';


    --

    -- テーブルのテーブル構造log_url

    CREATE TABLE IF NOT EXISTS log_url( url_idbigint(20) unsigned NOT NULL DEFAULT '0', visitor_idbigint(20) unsigned DEFAULT NULL, visit_timedatetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY ( url_id), KEY IDX_VISITOR( visitor_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='URL 訪問履歴';


    --

    -- テーブルのテーブル構造log_url_info

    CREATE TABLE IF NOT EXISTS log_url_info( url_idbigint(20) unsigned NOT NULL AUTO_INCREMENT, urlvarchar(255) NOT NULL DEFAULT '', referervarchar(255) DEFAULT NULL, PRIMARY KEY ( url_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='詳細情報URL 訪問';


    --

    -- テーブルのテーブル構造log_visitor

    CREATE TABLE IF NOT EXISTS log_visitor( visitor_idbigint(20) unsigned NOT NULL AUTO_INCREMENT, session_idchar(64) NOT NULL DEFAULT '', first_visit_atdatetime DEFAULT NULL, last_visit_atdatetime NOT NULL DEFAULT '0000-00-00 00:00:00', last_url_idbigint(20) unsigned NOT NULL DEFAULT '0', store_idsmallint(5) unsigned NOT NULL, PRIMARY KEY ( visitor_id) ) エンジン=InnoDB DEFAULT CHARSET=utf8 COMMENT='システム訪問者ログ';


    --

    -- テーブルのテーブル構造log_visitor_info

    CREATE TABLE IF NOT EXISTS log_visitor_info( visitor_idbigint(20) unsigned NOT NULL DEFAULT '0', http_referervarchar(255) DEFAULT NULL, http_user_agentvarchar(255) DEFAULT NULL, http_accept_charsetvarchar(255) DEFAULT NULL, http_accept_languagevarchar(255) DEFAULT NULL, server_addrbigint(20) DEFAULT NULL, remote_addrbigint(20) DEFAULT NULL, PRIMARY KEY ( visitor_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='訪問者による追加情報';


    --

    -- テーブルのテーブル構造log_visitor_online

    CREATE TABLE IF NOT EXISTS log_visitor_online( visitor_idbigint(20) unsigned NOT NULL AUTO_INCREMENT、 visitor_typechar(1) NOT NULL、 remote_addrbigint(20) NOT NULL、 first_visit_atdatetime DEFAULT NULL、 last_visit_atdatetime DEFAULT NULL、 customer_idint(10) unsigned DEFAULT NULL、 last_urlvarchar(255) DEFAULT NULL, PRIMARY KEY ( visitor_id), KEY IDX_VISITOR_TYPE( visitor_type), KEY IDX_VISIT_TIME( first_visit_at, last_visit_at), KEY IDX_CUSTOMER( customer_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    切り捨てreport_eventます。

    切り捨てreport_viewed_product_indexます。

    切り捨てreport_compared_product_indexます。

    切り捨てdataflow_batch_exportます。

    ALTER TABLE ordersCHANGE url parent_idVARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;

于 2012-11-02T11:36:03.527 に答える
5

I lib\Varien\Db\Adapter\Pdo\Mysql.phpファイルの次の行を変更して、クエリのログ記録について

protected $_debug               = true;
protected $_logAllQueries       = true;
protected $_debugFile           = 'var/debug/pdo_mysql.log';

次に、pdo_myql.logファイルを分析して、クエリがエラーで実行されていることを知り、magento インストーラーが何度もそれを実行しました。

エラーでした。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ''11199-1' for key 'UNQ_INCREMENT_ID'

そのため、データベース テーブルのエントリを削除し、pdo_mysql.logで他のクエリが表示され、アップグレードが完了しました。

マジェントのアップグレードに何日も取り組んでいる私は、マジェントを 1.4.0.1 から 1.7.0.2 に正常にアップグレードするための手順を要約しています。プロジェクトごとに異なるデータがあるため、表示されるこれらのエラーは他のプロジェクトでは異なります。

  1. 新しいバージョン用の新しいデータベースを作成します。( 大きなデータベースのインポートとエクスポートに適しているため、SQLyogを使用しています)。

  2. wwwまたはhtdocsで新しいバージョン 1.7.0.1 を抽出してインストールします。私のプロジェクト名はmagento171です。

  3. 修復ステップ新しいデータベースが必要になるため、新しいデータベースを作成します。

  4. 古いデータベースデータを新しいデータベースにインポートします。

  5. 新しくインストールされたバージョンの magento で、 etc/local.xmlの新しいデータベース名を変更します。

  6. etc/local.xmlで、 SET NAMES utf8 を見つけてSET NAMES utf8に変更します。SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0; .

  7. 古いプロジェクト ファイルを新しいバージョンの magento にコピーします。空のフォルダーにテーマがあります。デフォルトのフォルダにテンプレート ファイルがある場合は、デフォルトをコピーします。

    • app\design\frontend\default\blank

    • アプリ\コード\ローカル

    •スキン\フロントエンド\デフォルト/空白

    • app\etc\modules (新しいバージョンにないファイルをコピーします)。

  8. lib\Varien\Db\Adapter\Pdo\ Mysql.phpの次の行を変更して、MySql クエリのログを記録する

     protected $_debug               = true;
     protected $_logAllQueries       = true;
     protected $_debugFile           = 'var/debug/pdo_mysql.log';
    
  9. code/core/mage/でCREATE TABLEを検索 してCREATE TABLE IF NOT EXISTSに変更します。

  10. テーブルcore_config_dataの次のエントリを変更します (プロジェクト フォルダー名を使用します)。

      • web/unsecure/base_url | http://localhost/magento171/
      • web/secure/base_url   | http://localhost/magento171/
    
  11. /errors/local.xml.sampleの名前を/errors/local.xmlに変更して、 error_reporting を有効にします。

  12. var\cache内のすべてのデータを削除して、magento キャッシュをクリアします。

  13. ブラウザーに移動し、プロジェクト パスを入力します。 http://localhost/magento171/にアクセスし、ブラウザーとvar/debug/pdo_mysql.logファイルに注目してください。

  14. 最初に発生したエラーは次のとおりです。ファイルのエラー: "D:\xampp\htdocs\magento171\app\code\core\Mage\Sales\sql\sales_setup\mysql4-upgrade-1.3.99-1.4.0.0.php"

    • SQLSTATE [23000]: 整合性制約違反: 1062 キー 'PRIMARY' のエントリ '7' が重複しています

    修正: pdo_mysql.logファイルから、問題がsales_flat_orderテーブルにあることがわかりました。これは、主キーの重複エントリが多数あることを意味するため、すべての sales テーブルを切り捨てました。これは実際には私の古いDBのエラーです。新しいバージョンでは、increment_id は UNIQUE です。主キーのチェックをスキップすることはできないため、sales に関連するすべてのテーブルを切り捨てました。同じ問題がある場合は、その機能に関連するすべてのテーブルを切り捨てます。たとえば、顧客で重複している場合はすべての顧客テーブルを切り捨て、カタログにある場合はカタログ テーブルを切り捨てます。ただし、エラーが発生した時点で切り捨てを行う必要があることに注意してください。インストールが開始される前に切り捨てが行われると、インストーラーは既存のデータを読み取らず、最終的に注文や請求書の欠落などの記録を見逃すことになります。

    SET FOREIGN_KEY_CHECKS = 0;
    TRUNCATE `sales_flat_creditmemo`;
    TRUNCATE `sales_flat_creditmemo_comment`;
    TRUNCATE `sales_flat_creditmemo_grid`;
    TRUNCATE `sales_flat_creditmemo_item`;
    TRUNCATE `sales_flat_invoice`;
    TRUNCATE `sales_flat_invoice_comment`;
    TRUNCATE `sales_flat_invoice_grid`;
    TRUNCATE `sales_flat_invoice_item`;
    TRUNCATE `sales_flat_order`;
    TRUNCATE `sales_flat_order_address`;
    TRUNCATE `sales_flat_order_grid`;
    TRUNCATE `sales_flat_order_item`;
    TRUNCATE `sales_flat_order_payment`;
    TRUNCATE `sales_flat_order_status_history`;
    TRUNCATE `sales_flat_quote`;
    TRUNCATE `sales_flat_quote_address`;
    TRUNCATE `sales_flat_quote_address_item`;
    TRUNCATE `sales_flat_quote_item`;
    TRUNCATE `sales_flat_quote_item_option`;
    TRUNCATE `sales_flat_quote_payment`;
    TRUNCATE `sales_flat_quote_shipping_rate`;
    TRUNCATE `sales_flat_shipment`;
    TRUNCATE `sales_flat_shipment_comment`;
    TRUNCATE `sales_flat_shipment_grid`;
    TRUNCATE `sales_flat_shipment_item`;
    TRUNCATE `sales_flat_shipment_track`;
    SET FOREIGN_KEY_CHECKS = 1;
    
  15. インストールに時間がかかりすぎるため、pdo_mysql.logファイルを調べると、次のエラーが何度も表示されます。表示されるエラー: SQLSTATE[23000]: 整合性制約違反: 1062 キー 'UNQ_INCREMENT_ID' のエントリ ''11199-1' が重複しています 修正: テーブルの最初のエントリを削除します。

  16. データベースの修復手順: magento-db-repair-tool-1.1 (http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/db-repair-tool)を使用して、新しいデータベースで新しいデータベースを修復する必要があります。レポートの最後に、すべての修正が表示されます。

  17. これで、Web サイトをライブ サーバーに簡単に移行できます。

于 2012-11-02T19:12:19.690 に答える
2

Magento 1.4 から 1.7.x へのアップグレードに関する最も包括的な説明は、ターンキー Web サイトで提供されている次の方法だと思います。

Magento アップグレードのこの部分に進む前に、Magento アップグレード スクリプトがストアをアップグレードするバージョンを確認することが重要です。これを確認するには、次のコマンドを入力します。

1
./mage list-upgrades

この結果が表示される場合:

Updates for community:
Mage_All_Latest: 1.4.2.1 => 1.7.0.2
Lib_Js_Mage: 1.4.2.0 => 1.7.0.2
Lib_Varien: 1.4.2.0 => 1.7.0.2

これは、Magento がバージョン 1.7.0.2 にアップグレードされることを意味します。必要なものでない場合は、アップグレード チャネルを「ベータ」に変更し、Magento を RC (ベータ) バージョンにアップグレードできます。

1 – 次のコマンドを入力して、アップグレード チャネルを安定版に変更します (「安定版」チャネルは、Magento を最新の 1.7.x 安定版にアップグレードすることに注意してください)。

1
./mage config-set preferred_state stable

この後、「./mage list-upgrades」コマンドを実行すると、次の結果が表示されます。

コミュニティの更新:

  Mage_All_Latest: 1.4.2.1 => 1.7.0.2.
    Lib_Js_Mage: 1.4.2.0 => 1.7.0.2.
    Lib_Varien: 1.4.2.0 => 1.7.0.2.
    Lib_Phpseclib: 1.4.2.0 => 1.7.0.2.
    Mage_Core_Adminhtml: 1.4.2.0 => 1.7.0.2.
    Mage_Core_Modules: 1.4.2.0 => 1.7.0.2.

2 – チャネルを選択した後、次のコマンドを使用して Magento を Magento 1.7.0.2 にアップグレードできます。

1
./mage upgrade-all --force

「./mage upgrade-all –force」が機能しない場合は、次のコマンドを実行してみてください。

1
./mage install connect20.magentocommerce.com/community Mage_All_Latest --force

画面にアップグレードされたパッケージが表示されます。

…

    Package upgraded: community/Mage_Locale_en_US 1.7.0.2
    Package upgraded: community/Lib_Mage 1.7.0.2
    Package upgraded: community/Lib_ZF 1.11.1.0
    Package upgraded: community/Lib_Js_Prototype 1.7.0.2.
    Package upgraded: community/Lib_ZF_Locale 1.11.1.0

これでアップグレードが完了し、ブラウザで Magento ストアにアクセスしてデータベースのアップグレードを実行できます。このプロセスには数分かかるため、しばらくお待ちください。すべてが正しくアップグレードされていれば、ブラウザにアップグレードされたストアが表示されます。データベースをアップグレードする前に、PHP エンジンの時間とメモリの制限を増やすことをお勧めします。

それを増やすことができない場合は、SSH 経由でデータベースのアップグレードを実行してみてください。

1

    php -f ./index.php

データベースのアップグレードが完了すると、Magento 管理パネルのフッターでストアのバージョンを確認できます。

于 2013-01-02T11:49:41.890 に答える
1

apacheログを確認してください。ただし、アップグレードプロセスのどこかで問題が発生しているようです。すべてのファイルが新しいバージョンであることを確認し、データベースをバックアップし、データベース接続情報が正しいことを確認してください。

データベースのサイズを再確認することもできます。データベースが巨大な場合、magentoがタイムアウトしている可能性があります。

于 2012-10-31T18:28:07.470 に答える
1

現在の (1.4.0.1) データベースの大きさは? 最近、7 GB のデータベースをアップグレードしなければならなかったとき、ローカル サーバーで週末全体がかかりました。このような長いプロセスの理由は、バージョン 1.6 に新しいインデクサーがあり、データベース構造が再構築されたためです。インストール スクリプトは、更新されたコードの最初のロード時に実行されることを意図しています。多くの外部キーを削除し、多くの制約を持つ新しいキーを作成しています。

于 2012-10-31T19:46:04.810 に答える