4.7.2 以前のバージョンをMySQL 8 で動作させる方法

対象バージョン

 

CS-Cart 4.7.2-jp-1 以前のバージョン


 

概要

 

MySQL 8 のデータベースを使用してCS-Cartを使用すると、
ショップ画面や管理画面の商品で「SERVICE UNAVAILABLE」が表示される。


上記機能を追加するには以下の通り修正する必要があります。

 


 

修正方法

 

下記ファイルのSQLを修正してください。

バージョン 4.3.6 から 4.7.2 の場合:

 

  • /app/functions/fn.catalog.php
下記部分を検索し、
    $fields[] = 'groups.position AS group_position';
    $join .= db_quote(" LEFT JOIN ?:product_features AS groups ON pf.parent_id = groups.feature_id");
下記のように修正してください。
    $fields[] = 'pf_groups.position AS group_position';
    $join .= db_quote(" LEFT JOIN ?:product_features AS pf_groups ON pf.parent_id = pf_groups.feature_id");
  • /app/schemas/last_view/frontend.functions.php
下記部分を検索し、
    $sql = "SELECT b.row FROM "
        . "(SELECT product_id, @r := @r + 1 as row FROM"
下記のように修正してください。
    $sql = "SELECT b.row_position FROM "
        . "(SELECT product_id, @r := @r + 1 as row_position FROM"

 

バージョン 4.3.4 の場合:

 

  • /app/functions/fn.catalog.php
下記部分を検索し、
    $fields[] = 'groups.position AS group_position';
    $join .= db_quote(" LEFT JOIN ?:product_features AS groups ON pf.parent_id = groups.feature_id");
下記のように修正してください。
    $fields[] = 'pf_groups.position AS group_position';
    $join .= db_quote(" LEFT JOIN ?:product_features AS pf_groups ON pf.parent_id = pf_groups.feature_id");
  • /app/schemas/last_view/frontend.functions.php
下記部分を検索し、
    $product_position = db_get_field("SELECT a.row FROM (SELECT products.product_id, @r := @r + 1 as row FROM ?:products as products $join WHERE 1 $condition GROUP BY products.product_id $sorting) AS a WHERE a.product_id = ?i", $product_id);
下記のように修正してください。
    $product_position = db_get_field("SELECT a.row_position FROM (SELECT products.product_id, @r := @r + 1 as row_position FROM ?:products as products $join WHERE 1 $condition GROUP BY products.product_id $sorting) AS a WHERE a.product_id = ?i", $product_id);

 

バージョン 4.0.2 から 4.2.4 の場合:

 

  • /app/functions/fn.catalog.php
下記部分を検索し、
    $join .= db_quote(" LEFT JOIN ?:product_features AS groups ON pf.parent_id = groups.feature_id");

    $fields[] = 'groups.position AS group_position';
下記のように修正してください。
    $join .= db_quote(" LEFT JOIN ?:product_features AS pf_groups ON pf.parent_id = pf_groups.feature_id");

    $fields[] = 'pf_groups.position AS group_position';
  • /app/schemas/last_view/frontend.functions.php
下記部分を検索し、
    $product_position = db_get_field("SELECT a.row FROM (SELECT products.product_id, @r := @r + 1 as row FROM ?:products as products $join WHERE 1 $condition GROUP BY products.product_id $sorting) AS a WHERE a.product_id = ?i", $product_id);
下記のように修正してください。
    $product_position = db_get_field("SELECT a.row_position FROM (SELECT products.product_id, @r := @r + 1 as row_position FROM ?:products as products $join WHERE 1 $condition GROUP BY products.product_id $sorting) AS a WHERE a.product_id = ?i", $product_id);

 

 ----------------------------------------------------------------

※ お使いのCS-Cartのバージョン確認方法は、 こちら をご参照ください。