Giter VIP home page Giter VIP logo

data-migration-plugin's Introduction

EC-CUBE 4.3

Unit test for EC-CUBE E2E test for EC-CUBE Plugin test for EC-CUBE PHPStan codecov

Slack

4.1からの更新内容はリリースノートをご確認ください。

  • 本ドキュメントはEC-CUBEの開発者を主要な対象者としております。
  • パッケージ版はEC-CUBEオフィシャルサイトで配布しています。
  • カスタマイズやEC-CUBEの利用、仕様に関しては開発コミュニティをご利用ください。
  • 本体開発にあたって不明点などあればIssueをご利用下さい。
  • EC-CUBE 3系の保守については、 EC-CUBE/ec-cube3にて開発を行っております。
  • EC-CUBE 2系の保守については、 EC-CUBE/ec-cube2にて開発を行っております。

インストール

EC-CUBE 4.2のインストール方法

開発ドキュメントの インストール方法 の手順に従ってインストールしてください。

CSS の編集・ビルド方法

Sass を使用して記述されています。 Sass のソースコードは html/template/{admin,default}/assets/scss にあります。 前提として [https://nodejs.org/ja/] より、 Node.js をインストールしておいてください。

以下のコマンドでビルドすることで、 html/template/**/assets/css に CSS ファイルが出力されます。

npm ci # 初回およびpackage-lock.jsonに変更があったとき
npm run build # Sass のビルド

docker compose を使用している場合は以下のコマンドを実行してください

# 初回およびpackage-lock.jsonに変更があったとき
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npm ci
# Sass のビルド
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npm run build

JavaScript のビルド方法

フロントエンドで使用する JavaScript のライブラリは npm で管理されています。 JavaScript のライブラリは webpack でバンドル/minifyされます。 バンドルするライブラリを変更する場合は、テンプレートごとに以下の bundle.js を修正し、リビルドしてください。

npm ci # 初回およびpackage-lock.jsonに変更があったとき
npm run build # Sass 及び JavaScript のビルド

JavaScript ライブラリのみをビルドしたい場合は以下でも可能です。

npx webpack

docker compose を使用している場合は以下のコマンドを実行してください

# 初回およびpackage-lock.jsonに変更があったとき
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npm ci
# Sass のビルド
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npm run build
# JavaScript ライブラリのみのビルド
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npx webpack

動作確認環境

  • Apache 2.4.x (mod_rewrite / mod_ssl 必須)
  • PHP 7.4.x / 8.0.x / 8.1.x
  • PostgreSQL 10.x or higher / MySQL 5.7.x or 8.0.x
  • ブラウザー:Google Chrome

詳しくは開発ドキュメントの システム要件 をご確認ください。

ドキュメント

EC-CUBE 4.x 系の仕様や手順、開発Tipsに関するドキュメントを掲載しています。 修正や追記、新規ドキュメントの作成をいただく場合、以下のレポジトリからPullRequestをお送りください。 https://github.com/EC-CUBE/doc4.ec-cube.net

開発への参加

EC-CUBE 4.2の不具合の修正、機能のブラッシュアップを目的として、継続的に開発を行っております。
コードのリファクタリング、不具合修正以外のPullRequestを送る際は、Pull Requestのコメントなどに意図を明確に記載してください。

Pull Requestの送信前に、Issueにて提議いただく事も可能です。 Issuesの利用方法については、こちらをご確認ください。

Slackでも本体の開発に関する意見交換などを行っております。

コピーライトポリシーへの同意

コードの提供・追加、修正・変更その他「EC-CUBE」への開発の御協力(Issue投稿、Pull Request投稿など、GitHub上での活動)を行っていただく場合には、 EC-CUBEのコピーライトポリシーをご理解いただき、ご了承いただく必要がございます。 Issueの投稿やPull Requestを送信する際は、EC-CUBEのコピーライトポリシーに同意したものとみなします。

data-migration-plugin's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

data-migration-plugin's Issues

EC-CUBE 4.0.3環境でデータ移行プラグインが正常に動作しない

概要(Overview)

EC-CUBE4.0.3環境で、データ移行プラグインの動作テストを行ったところ、正しく動作しなかった。
具体的にはEC-CUBE 2.13.5環境で作成したバックアップデータを、
EC-CUBE 4.0.3環境でデータ移行プラグインを利用し、バックアップデータをアップロードしたところ、システムエラーとなり、受注データが正しく移行されないことを確認。

エラーログをsite.logにて確認したところ、
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'tax_adjust' cannot be null
という箇所があり、4.0.2から4.0.3のバージョンアップに伴う仕様変更が影響していると思われる。

再現手順(Procedure)

  • EC-CUBE 2.13.5でテスト用の[会員、管理者、商品、カテゴリ、受注、支払方法、配送方法、税設定、メルマガテンプレート]データを作成
  • EC-CUBE 2.13.5でバックアップデータを作成。
  • EC-CUBE 4.0.3環境でデータ移行プラグインを利用する。
  • アップロード実行時にシステムエラーとなる。

移行前環境 (environment)

EC-CUBE:2.13.5
DB:
MariaDB 5.5.60
PHP:5.4.16

移行後環境 (environment)

EC-CUBE:4.0.3
DB:
MariaDB 5.5.60
PHP:7.2.19

データ移行後に会員情報編集で EntityNotFoundException

EC-CUBE2.4.1 → EC-CUBE4.0.2
データ移行プラグイン 1.4.8

会員情報編集で EntityNotFoundException Entity of type 'Eccube\Entity\Master\Job' for IDs id(0) was not found Exception が発生する

移行前には dtb_customer の job_id はすべて null だったが、なぜか移行後に job_id が 0 になってしまっている。

商品説明・メールマガジン購読可否のフラグが移行できない(3系からの移行)

いつも大変お世話になっております…!
初めてIssueを入れさせていただきます。

EC-CUBE 3系→4系への移行で、以下の2つのデータが移行できません。
今回は、「会員と受注データのみ移行する」にはチェックを入れずに検証しています。

  1. 商品管理→商品説明 が移行できない
    該当部分のDBカラムは、
    3系:dtb_product テーブル内の description_detail
    4系:同上

商品説明に関しては、EC-CUBE 4系から最大3,000文字に変更になっているようですので、商品説明が長すぎるのでインポートできないのかと考え、一旦すべての商品説明を3,000文字に削った後にエクスポートしても、上記の現象が確認できました。商品説明にはHTMLタグが含まれています。

  1. 会員管理→メールマガジン購読可否のフラグ が移行できない
    該当部分のDBカラムは、
    3系:plg_mailmaga_customer
    4系:dtb_customer テーブル内の plg_mailmagazine_flg

2.13系から移行すると、商品一覧ページを表示する際にシステムエラーが発生する

概要(Overview)

2.13系で作成したバックアップデータを4系で引き継いだ後、管理画面で商品一覧ページを開くとシステムエラーになる。

再現手順(Procedure)

  • 2.13系でテスト用の[会員、管理者、商品、カテゴリ、受注、支払方法、配送方法、税設定、メルマガテンプレート]データを作成
  • 2.13系でバックアップデータを作成。
  • 4系の環境にバックアップデータを引継ぐ。
  • 管理画面で 商品管理 > 商品一覧を開くとシステムエラー発生

移行前環境 (environment)

  • EC-CUBE:2.13.5
  • DB:
    • PostgreSQL 9.2.23
  • PHP:5.4.16

移行後環境 (environment)

  • EC-CUBE:4.0.2
  • DB:
    • PostgreSQL 9.2.24
  • PHP:7.1.21

エラー発生時のログ

エラー発生時のログ.txt

2系、3系からのデータ移行時に一部の会員データが消えることがある

2系、3系からのデータ移行時、dtb_customer.secret_keyの値をmt_rand関数で生成している
https://github.com/EC-CUBE/data-migration-plugin/blob/4.2/Controller/Admin/ConfigController.php#L403-L404

mt_randは特定範囲で乱数を生成する関数なので重複が発生しうる
mysqlでのデータ登録時にREPLACE INTOを使用しており、ユニークキー制約があるdtb_customer.secret_keyで重複が発生した場合、先に登録されていたレコードが削除されることになる

コミュニティの報告
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=28109&forum=16&viewmode=flat&order=ASC&start=0

おそらく配送方法・支払方法に起因し、購入完了時のシステムエラーが発生する(3系からの移行)

先程のものとは分けてIssueを立てさせていただきます…!

特に大きな問題ではないのですが、データ移行プラグインを使用してデータを移行した後に、配送方法・支払方法については管理画面内から「登録」を一回押しておかないと、移行したばかりの状態で購入しようとすると、購入完了時にシステムエラーになります。
事前に上記の動作を終えると、システムエラーにならずに正しく購入できるようになります。
上記の問題は出ますが、配送方法・支払方法のデータ自体は一応移行されます。

DateTime::__construct() エラー

コミュニティの皆様ありがとうございます。

概要

現在稼働中のEC-CUBE2系からデータ移行プラグイン移行マニュアル に記載された手順に従って、取得したバックアップファイルをローカル環境のXAMPPに用意したEC-CUBE4系にデータ移行しようとしたところシステムエラーが表示され、以下のエラーログが書き出されました。

エラーログ

admin.ERROR [5d4b6de3] [516a146] [3] [Eccube\Log\Logger:log:64] - システムエラーが発生しました。 
["DateTime::__construct(): Failed to parse time string (2014-03-20 11:09:26""") at position 19 ("): Unexpected character",
"C:\\xampp\\htdocs\\DIR\\app\\Plugin\\DataMigration4\\Controller\\Admin\\ConfigController.php",1605,"#0
 C:\\xampp\\htdocs\\DIR\\app\\Plugin\\DataMigration4\\Controller\\Admin\\ConfigController.php(1605): DateTime->__construct('2014-03-20 11:0...', Object(DateTimeZone))\n#1
 C:\\xampp\\htdocs\\DIR\\app\\Plugin\\DataMigration4\\Controller\\Admin\\ConfigController.php(569): Plugin\\DataMigration4\\Controller\\Admin\\ConfigController->convertTz('2014-03-20 11:0...')\n#2
 C:\\xampp\\htdocs\\DIR\\app\\Plugin\\DataMigration4\\Controller\\Admin\\ConfigController.php(398): Plugin\\DataMigration4\\Controller\\Admin\\ConfigController->saveToP(Object(Doctrine\\DBAL\\Connection), 
'C:\\\\xampp\\\\htdocs...', 'dtb_products', 'dtb_product')\n#3
 C:\\xampp\\htdocs\\DIR\\app\\Plugin\\DataMigration4\\Controller\\Admin\\ConfigController.php(120): Plugin\\DataMigration4\\Controller\\Admin\\ConfigController->saveProduct(Object(Doctrine\\DBAL\\Connection), 
'C:\\\\xampp\\\\htdocs...')\n#4
 C:\\xampp\\htdocs\\DIR\\vendor\\symfony\\http-kernel\\HttpKernel.php(151): Plugin\\DataMigration4\\Controller\\Admin\\ConfigController->index(Object(Symfony\\Component\\HttpFoundation\\Request), Object(Doctrine\\DBAL\\Connection))\n#5
 C:\\xampp\\htdocs\\DIR\\vendor\\symfony\\http-kernel\\HttpKernel.php(68): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#6
 C:\\xampp\\htdocs\\DIR\\vendor\\symfony\\http-kernel\\Kernel.php(200): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#7
 C:\\xampp\\htdocs\\DIR\\index.php(76): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#8 {main}"] [POST, /DIR/html/data_migration4/config, ::1, http://localhost/DIR/html/data_migration4/config, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36]
[y-m-d h:m:s] admin.INFO [5d4b6de3] [516a146] [3] [Eccube\Log\Logger:log:64] - LOGIC END ["data_migration4_admin_config"] [POST, /DIR/html/data_migration4/config, ::1, http://localhost/DIR/html/data_migration4/config, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36]

環境

稼働中サーバ

  • OS: centos6.1
  • ec-cube: 2.11.5
  • mysql: 5.5.31
  • php: 5.5.38

ローカル

  • OS: Windows10
  • ec-cube: 4.0.5
  • mysql: 5.5.31
  • php: 7.1.6

その他

バックアップファイルを解凍し該当部分のcsvファイルを見てみましたが、異常なデータが入っている様には見受けられませんでした。
解決策について、お心当たりありますでしょうか?

2.4系 mysqlの場合で規格のNULLデータが作成されない場合があるようです

該当コードはここ

$i = -1;
while (($row = fgetcsv($handle)) !== false) {
// 1行目をkeyとした配列を作る
$data = $this->convertNULL(array_combine($key, $row));
// 規格がある場合,
if ($data['classcategory_id1'] != 0 && $data['classcategory_id2'] != 0) {
$data['classcategory_id1'] = 0;
$data['classcategory_id2'] = 0;
$data['status'] = 1;
$data['product_class_id'] = $i; // 苦肉の策
$add_value[$data['product_id']] = $data;
$i--;
}
}

結果商品の規格情報の編集・クリアなどが出来ないです。

SQLで修正は一応可能。(問題はある
INSERT INTO dtb_product_class (product_id, class_category_id1, class_category_id2, visible, discriminator_type,price02,create_date,update_date, sale_type_id) SELECT product_id, NULL, NULL, 0, discriminator_type,price02,create_date,update_date,sale_type_id FROM dtb_product_class WHERE class_category_id1 is not null GROUP BY product_id

データ移行処理時のメモリ使用量が多い

EC-CUBE2.4.1 → EC-CUBE4.0.2
データ移行プラグイン 1.4.8

移行対象のテーブルのみで作成したバックアップファイルは 71.8MB
解凍したディレクトリは 592.5MB

OutOfMemoryException Error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 36864 bytes) が発生。

memory_limit を徐々に上げていき、4G で失敗、5G で成功。
メモリを食いすぎている。。

2系、3系からのデータを移行時に、本人認証プラグインをインストールしている場合、移行が失敗しエラーになる

本人認証プラグインをインストールしている場合、dtb_customerにdevice_authedカラムが追加される状態になっていますが、
旧バージョンのバックアップファイルをアップロードすると、以下のエラーが発生する。

An exception occurred while executing a query: SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column "device_authed" of relation "dtb_customer" violates not-null constraint

解決として、本人認証プラグインをアンインストールしもう一度データ移行を実施すれば、エラーが発生しなくなる。

受注データを管理画面から作成しようとすると、システムエラーが発生する

概要(Overview)

  • Postgres2.11環境のバックアップデータを4系に引き継ぎ、受注データを管理画面から作成しようとすると、システムエラーが発生する。

再現手順(Procedure)

・2.11系でテスト用の[会員、管理者、商品、カテゴリ、受注、支払方法、配送方法、税設定、メルマガテンプレート]データを作成
・2.11系でバックアップデータを作成。
・4系の環境にバックアップデータを引継ぐ。
・4系の環境で、[会員、管理者、商品、カテゴリ、受注、支払方法、配送方法、税設定、メルマガテンプレート]のテストデータを作成。

移行前環境 (environment)

  • EC-CUBE:2.11.5
  • DB:
    • PostgreSQL 9.2.23
  • PHP:5.4.16

移行後環境 (environment)

  • EC-CUBE:4.0.2
  • DB:
    • PostgreSQL 9.2.24
  • PHP:7.1.21

使用したバックアップファイル

2.11.5-pgsql-backup.tar.gz

発生時のエラーログ

error.log

3系から移行したときに受注一覧が表示されない

EC-CUBE 3系から4系への移行を行った際に、受注一覧が真っ白になってしまいます。
データベースには、問題なく移行できているようでした。
また、管理画面からの受注登録も公開画面からの購入しても問題なく行え、データベースにも登録されます。

フロント画面で商品を購入時にエラーが発生する

概要(Overview)

2.12系のバックアップデータを4.02系(以下、4系)に引継ぎ後、フロント画面で商品を購入時にエラーが発生する。

再現手順(Procedure)

  • 2.12系でテスト用の[会員、管理者、商品、カテゴリ、受注、支払方法、配送方法、税設定、メルマガテンプレート]データを作成。
  • 2.12系でバックアップデータを作成。
  • 4系の環境にバックアップデータを引継ぐ。
  • 4系の環境で、[会員、管理者、商品、カテゴリ、受注、支払方法、配送方法、税設定、メルマガテンプレート]のテストデータを作成。
  • フロント画面で会員情報でログインする。
  • 商品を購入すると、システムエラーが発生。

移行前環境 (environment)

  • EC-CUBE:2.12.6
  • DB:
    • PostgreSQL 9.2.23
  • PHP:5.4.16

移行後環境 (environment)

  • EC-CUBE:4.0.2
  • DB:
    • PostgreSQL 9.2.24
  • PHP:7.1.21

発生時のエラーログ

error_log.txt

プラグイン使用後、管理者画面にログインできません。

プラグインの開発ありがとうございます。
本番環境をeccube2から4に移行するために、このプラグインを使用しようと考えています。

プラグインを使用して実際に本番環境を移行できるのかをテスト環境にて検証しているのですが
プラグイン使用後に管理者画面にログインしようとしたところ、ログインできない状態でいます。

尚、似たような質問を探したところ、こちらを発見したので、この内容に沿うようなことは行いました。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=21922&forum=11
dtb_member の password, saltの値の変更などは行ってみたのですが、それでもログインはできていません。

データ移行プラグインを使用し、データ移行を行うとフィールドにnullが入ります。

このような質問の場を設けていただきありがとうございます。
また、長文になってしまい申し訳ありません。

以下、質問の内容です。
eccube2からeccube4にデータを移行するためにデータ移行プラグインを使おうとしています。
データ移行プラグインが実際に使えるかを調査しているところです。

eccube2でeccube2backup.tar.gzファイルを作成し、eccube4でデータ移行プラグインを使用したところ
「商品データを登録しました。」
「受注データを登録しました。」
「会員データ・受注データを登録しました。」
「会員データ登録しました。」と表示されるのですが、管理者画面から確認すると、eccube2で登録した商品データ、会員データは表示されておりませんでした。
phpmyadominからテーブルを確認したところ、「dtb_customer」「dtb_product」などのテーブルで、フィールドの値がNULLで登録されていました。

データ移行プラグインの説明には
会員データ、管理者データ、商品データ、等が移行できると書かれてあったのですが、それらも移行後にnullになってしまっているので、こちらで質問させていただきました。

参考までに実際にnullになっているテーブルの内容を張り付けさせていただきました。
(少し見づらいですが、ご了承ください。)
dtb_customerテーブル----------------------------------------------------------------
id customer_status_id sex_id job_id country_id pref_id name01 name02 kana01 kana02 company_name postal_code addr01 addr02 email phone_number birth (DC2Type:datetimetz) password salt secret_key first_buy_date (DC2Type:datetimetz) last_buy_date (DC2Type:datetimetz) buy_times buy_total note reset_key reset_expire (DC2Type:datetimetz) point create_date (DC2Type:datetimetz)
update_date (DC2Type:datetimetz) discriminator_type
1 NULL NULL NULL NULL NULL Not null violation Not null violation NULL NULL NULL NULL NULL NULL Not null violation NULL NULL Not null violation NULL 2075836716 NULL NULL NULL NULL NULL NULL NULL 0 2021-09-09 12:36:15 2021-09-09 12:36:15 customer
2 NULL NULL NULL NULL NULL Not null violation Not null violation NULL NULL NULL NULL NULL NULL Not null violation NULL NULL Not null violation NULL 1918015093 NULL NULL NULL NULL NULL NULL NULL 0 2021-09-09 12:36:15 2021-09-09 12:36:15 customer

dtb_productテーブル------------------------------------------------------------------
id creator_id product_status_id name note description_list description_detail search_word free_area create_date (DC2Type:datetimetz) update_date (DC2Type:datetimetz) discriminator_type
3 NULL NULL NULL NULL NULL NULL NULL 2021-09-09 12:36:16 2021-09-09 12:36:16 product
4 NULL NULL NULL NULL NULL NULL NULL 2021-09-09 12:36:16 2021-09-09 12:36:16 product
5 NULL NULL NULL NULL NULL NULL NULL 2021-09-09 12:36:16 2021-09-09 12:36:16 product
6 NULL NULL NULL NULL NULL NULL NULL 2021-09-09 12:36:16 2021-09-09 12:36:16 product
7 NULL NULL NULL NULL NULL NULL NULL 2021-09-09 12:36:16 2021-09-09 12:36:16 product

データ不整合発生時の修正SQL

データ移行後に不整合が発生した際にいつも実行してるSQLです。
プラグインに組み込めればとおもってますが、ちょっと手が空かない。。

### mtb_device_type
update dtb_order set device_type_id = null where device_type_id not in (select id from mtb_device_type)

### dtb_mail_history

// 確認
select t1.id, t1.order_id, t2.id from dtb_mail_history t1
left join dtb_order t2 on t1.order_id = t2.id
where t2.id is null and t1.order_id is not null

// 更新
delete from dtb_mail_history where id in (
select id (select t1.id from dtb_mail_history t1 left join dtb_order t2 on t1.order_id = t2.id where t2.id is null and t1.order_id is not null) as tmp
);

### dtb_customer_favorite_product

// 確認
select t1.id, t1.customer_id , t2.id from dtb_customer_favorite_product t1
left join dtb_customer t2 on t1.customer_id = t2.id
where t2.id is null and t1.customer_id is not null

// 更新
delete from dtb_customer_favorite_product where id in (
select t1.id from dtb_customer_favorite_product t1
left join dtb_customer t2 on t1.customer_id = t2.id
where t2.id is null and t1.customer_id is not null
);

### dtb_shipping

// 確認
select t1.id, t1.order_id , t2.id from dtb_shipping t1
left join dtb_order t2 on t1.order_id = t2.id
where t2.id is null and t1.order_id is not null

// 更新
delete from dtb_shipping where id in (
select t1.id from dtb_shipping t1
left join dtb_order t2 on t1.order_id = t2.id
where t2.id is null and t1.order_id is not null
);

### dtb_delivery_fee
// 確認
select t1.id, t1.delivery_id , t2.id from dtb_delivery_fee t1
left join dtb_delivery t2 on t1.delivery_id = t2.id
where t2.id is null and t1.delivery_id is not null

// 更新
delete from dtb_delivery_fee where id in (
select t1.id from dtb_delivery_fee t1
left join dtb_delivery t2 on t1.delivery_id = t2.id
where t2.id is null and t1.delivery_id is not null
);

### dtb_customer_address

// 確認
select t1.id, t1.customer_id , t2.id from dtb_customer_address t1
left join dtb_customer t2 on t1.customer_id = t2.id
where t2.id is null and t1.customer_id is not null

// 更新
delete from dtb_customer_address where id in (
select t1.id from dtb_customer_address t1
left join dtb_customer t2 on t1.customer_id = t2.id
where t2.id is null and t1.customer_id is not null
)

### データ不整合用のダミー商品を作成

select nextval('dtb_product_id_seq')
select nextval('dtb_product_class_id_seq')

xxx, yyy

insert into dtb_product
(id, name, product_status_id, create_date ,update_date, discriminator_type )
values
(xxx, 'データ移行用', 3, '2020-07-09 00:00:00','2020-07-09 00:00:00', 'product')

insert into dtb_product_class
(id, product_id, sale_type_id , stock_unlimited ,price02 ,visible ,currency_code ,point_rate ,create_date ,update_date, discriminator_type )
values
(yyy, xxx, 1, true, 1000, true, 'JPY', 1, '2020-07-09 00:00:00','2020-07-09 00:00:00', 'productclass')

### 存在しないproduct_idを持ってる受注明細にダミー商品を紐付け
// 確認
select t1.id, t1.product_id, t2.id from dtb_order_item t1
left join dtb_product t2 on t1.product_id = t2.id
where t2.id is null and t1.product_id is not null

// 更新
update dtb_order_item set product_id = xxx, product_class_id = yyy
where id in (
select t1.id from dtb_order_item t1
left join dtb_product t2 on t1.product_id = t2.id
where t2.id is null and t1.product_id is not null
)

### 存在しないproduct_class_idを持ってる受注明細にダミー商品を紐付け

// 確認
select t1.id, t1.product_class_id, t2.id from dtb_order_item t1
left join dtb_product_class t2 on t1.product_class_id = t2.id
where t2.id is null and t1.product_class_id is not null

// 更新
update dtb_order_item set product_id = xxx, product_class_id = yyy
where id in (
select t1.id from dtb_order_item t1
left join dtb_product_class t2 on t1.product_class_id = t2.id
where t2.id is null and t1.product_class_id is not null
)

# 存在しないproduct_idを持ってるproduct_classを削除
// 確認
select t1.id, t1.product_id , t2.id from dtb_product_class as t1
left join dtb_product t2 on t1.product_id = t2.id
where t2.id is null and t1.product_id is not null

// 更新(product_stock)
delete from dtb_product_stock  where product_class_id in (
select t1.id from dtb_product_class as t1
left join dtb_product t2 on t1.product_id = t2.id where t2.id is null and t1.product_id is not null
)
// 更新(product_class)
delete from dtb_product_class  where id in (
select t1.id from dtb_product_class as t1
left join dtb_product t2 on t1.product_id = t2.id where t2.id is null and t1.product_id is not null
)

# dtb_product_category

## product
// 確認
select t1.product_id, t2.id from dtb_product_category t1
left join dtb_product t2 on t1.product_id = t2.id
where t1.product_id is not null and t2.id is null;

// 削除
delete from dtb_product_category
where product_id in (
select t1.product_id from dtb_product_category t1
left join dtb_product t2 on t1.product_id = t2.id
where t1.product_id is not null and t2.id is null)

## category
// 確認
select t1.category_id, t2.id from dtb_product_category t1
left join dtb_category t2 on t1.category_id = t2.id
where t1.category_id is not null and t2.id is null;

// 削除
delete from dtb_product_category where category_id in (
select t1.category_id from dtb_product_category t1
left join dtb_category t2 on t1.category_id = t2.id
where t1.category_id is not null and t2.id is null)

支払方法の利用条件の下限値が引き継がれていない

概要(Overview)

2.11系で作成した支払方法を4系に引き継いだ時、支払方法の利用条件の下限値が引き継がれていない。

再現手順(Procedure)

  • 2.11系でテスト用の[会員、管理者、商品、カテゴリ、受注、支払方法、配送方法、税設定、メルマガテンプレート]データを作成
  • 2.11系でバックアップデータを作成。
  • 4系の環境にバックアップデータを引継ぐ。
  • 管理画面で設定 > 支払方法設定で2.11系環境でバックアップ用に作成した支払方法は利用条件の部分で料金の下限値と上限値を割り当てているが、下限値が引き継がれていない。

移行前環境 (environment)

  • EC-CUBE:2.11.5
  • DB:
    • PostgreSQL 9.2.23
  • PHP:5.4.16

移行後環境 (environment)

  • EC-CUBE:4.0.2
  • DB:
    • PostgreSQL 9.2.24
  • PHP:7.1.21

2系のサブ画像の取り扱い

2系からの移行において、サブ情報の画像も商品画像として移行されるとうれしいです。
もし技術的な問題があって移行できないのであれば、移行されない旨をドキュメントに明記してほしいです。

支払方法の移行ででmethod_classの値を設定したい

支払方法の移行で、現状ではdtb_payment.method_classはnullで移行される。
移行される支払方法はあくまで過去受注の参照用で、利用できないのが現状の仕様。

ただ、決済プラグイン側で、過去受注を表示する際にmethod_classの値を参照してシステムエラーが発生するケースが発生しており、移行時にmethod_classの値にEccube\Service\Payment\Method\Cashを設定しておけるとありがたいです。

オプション「会員と受注データのみ移行する・・・ 」にチェックして実行するとエラーになる。(2系からの移行)

初めてissuesを入れます。
データ移行プラグインのConfigControllerの1320行目でエラーになります。
$this->delivery_time配列が空のため、$this->delivery_time[$value['delivery_id']][$data['time_id']]にアクセスするとエラーになります。
調べていくと「会員・受注のみ移行」の場合、saveCustomerAndOrderが呼ばれ、$this->flag_3がfalseの場合は「$this->saveToO($em, $csvDir, 'dtb_delivery_time');」が実行されない為、$this->delivery_timeが作られていないような気がします。
※$this-saveOrderで「$this->saveToO($em, $csvDir, 'dtb_shipping');」をコールする前に「$this->saveToO($em, $csvDir, 'dtb_delivtime', 'dtb_delivery_time');」が実行されていたため、オプションチェックが無かった場合はエラーにならなかったと思います。

今回は下記対応を行いデータの移行を行っております。
問題無かったでしょうか?
1320行目:
//$value['time_id'] = $this->delivery_time[$value['delivery_id']][$data['time_id']];
if (!empty($this->delivery_time)) {
$value['time_id'] = $this->delivery_time[$value['delivery_id']][$data['time_id']];
}

データ移行後、お気に入り登録時にシステムエラー

データ移行後、商品詳細画面からお気に入り登録を行うとシステムエラーとなる
PostgreSQLで発生

シーケンスが更新されておらず、idが重複してしまう模様

システムエラーが発生しました。 ["An exception occurred while executing 'INSERT INTO dtb_customer_favorite_product (create_date, update_date, customer_id, product_id, discriminator_type) VALUES (?, ?, ?, ?, ?)' with params [\"2022-01-31 03:32:13+0000\", \"2022-01-31 03:32:13+0000\", 6247, 314, \"customerfavoriteproduct\"]:\n\nSQLSTATE[23505]: Unique violation: 7 ERROR:  duplicate key value violates unique constraint \"dtb_customer_favorite_product_pkey\"\nDETAIL:  Key (id)=(6) already exists.","/Users/chihiro_adachi/repos/eccube_co/local/hornet-hsrzrlpa/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgre

移行前に論理削除されていた税率が復活する

dtb_tax_rule.del_flg=1だった税率設定が移行後に復活し、サイトでアクティブになる場合がある。

実際には最新の10%の税率設定が有効になることがほとんどだと思います。
移行前のサイトで、税率設定で何かしらテストしてたような場合に発生するかもしれません。

設定で何とかするしかないかもしれませんが、
サイトの税率が変わってて驚いたので一応登録させていただきます。

migration_tax_rule

データ移行実施後、何らかのプラグインを有効化時にSQLが発生する

概要

プラグインの有効化時に、以下のSQLエラーが発生

 [2019-07-02 15:24:26] admin.ERROR [0b870052c09629c9f2032e6c6fb6cfe5] [30a330b] [2] [Eccube\Log\Logger:log:64] - システムエラーが発生しました。 ["An exception occurred while executing 'ALTER TABLE dtb_class_category ADD CONSTRAINT FK_9B0D1DBAB462FB2A FOREIGN KEY (class_name_id) REFERENCES dtb_class_name (id) NOT DEFERRABLE INITIALLY IMMEDIATE':\n\nSQLSTATE[23503]: Foreign key violation: 7 ERROR:  insert or update on table \"dtb_class_category\" violates foreign key constraint \"fk_9b0d1dbab462fb2a\"\nDETAIL:  Key (class_name_id)=(0) is not present in table \"dtb_class_name\".","/var/ec-cube/src/Eccube/Service/

発生経緯

  1. データ移行プラグインでバックアップデータを取り込み
  2. データを取り込んだ状態のDBをダンプ→後日リストア
  3. プラグインを有効化
  4. 2の際に、外部キーをリストアすることができず、外部キーがはられていない状態になっていた
  5. プラグイン有効化時に、scheme updateが実行され、外部キーを貼ろうとしてSQLエラーが発生

対象テーブル

不整合が発生していたテーブルは以下のとおりです。

対象テーブル 不整合データ 備考
dtb_class_category class_name_id が0のデータができる
dtb_csv creator_id が 1のデータができる 事前に商品レビュープラグインをインストール
dtb_tax_rule creator_id が 1のデータができる
dtb_shipping creator_id が 1のデータができる
dtb_member creator_id が 1のデータができる
dtb_payment creator_id が 1のデータができる

バックアップデータ

20190703.tar.gz

環境

  • EC-CUBE 4.0.2
  • PostgreSQL 10.6
  • PHP 7.2

メモ

不整合があるかどうかの確認方法のメモです

以下ですべての外部キーを削除し、
https://qiita.com/msp0310/items/f57c610fda96f1bbcd72

bin/console doctrine:scheme:update --force で外部キーが全て復元できたらOK

受注一覧で表示されている受注データのお届け先が【Not null violationNot null violation】になっている

概要(Overview)

受注一覧で表示されている受注データのお届け先が【Not null violationNot null violation】になっている。

再現手順(Procedure)

  • 2.11系でテスト用の[会員、管理者、商品、カテゴリ、受注、支払方法、配送方法、税設定、メルマガテンプレート]データを作成
  • 2.11系でバックアップデータを作成。
  • 4系の環境にバックアップデータを引継ぐ。
  • 管理画面で受注一覧開くと、お届け先の箇所が【Not null violationNot null violation】になっている

移行前環境 (environment)

  • EC-CUBE:2.11.5
  • DB:
    • PostgreSQL 9.2.23
  • PHP:5.4.16

移行後環境 (environment)

  • EC-CUBE:4.0.2
  • DB:
    • PostgreSQL 9.2.24
  • PHP:7.1.21

バックアップファイル

2.11.5-pgsql-backup (1).tar.gz

2.12のバックアップデータでSQLエラー

概要

2.12.6のバックアッデータをアップロードすると、SQLエラーが発生します。

再現手順

  • 2.12.6環境
    • 会員を1件作成
    • 作成した会員で、おなべ/レシピを購入
    • バックアップ管理からバックアップ作成
  • 4.0.2環境
    • データ移行プラグインで、バックアップファイルをアップロード

環境

  • 移行元

    • EC-CUBE 2.12.6
    • PostgreSQL 9.2.23
    • PHP 5.4.16
  • 移行先

    • EC-CUBE 4.0.2
    • PostgreSQL 9.6.13
    • PHP 7.2.13

エラーログ

An exception occurred while executing 'INSERT INTO dtb_order_item (id, order_id, product_id, product_class_id, shipping_id, rounding_type_id, tax_type_id, tax_display_type_id, order_item_type_id, product_name, product_code, class_name1, class_name2, class_category_name1, class_category_name2, price, quantity, tax, tax_rate, tax_rule_id, currency_code, processor_name, point_rate, discriminator_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);' with params ["1", "1", "2", "10", 1, 1, 1, 1, 1, "\u304a\u306a\u3079", "nabe-01", null, null, "", "", "1650", "1", 0, null, 1, "JPY", null, "10", "orderitem", "2", "2", "3", "11", null, 1, 1, 1, 1, "\u304a\u306a\u3079\u30ec\u30b7\u30d4", "recipe-01", null, null, "", "", "100", "1", 0, null, 1, "JPY", null, "10", "orderitem"]:

SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column "tax_rate" violates not-null constraint
DETAIL: Failing row contains (1, 1, 2, 10, 1, 1, 1, 1, 1, おなべ, nabe-01, null, null, , , 1650.00, 1, 0, null, 1, JPY, null, 10, orderitem).

バックアップファイル

backup2_12.tar.gz

2.12.2から4.0.3のデータ移行時のエラーについて

お世話になります。
プラグインの開発、ありがとうございます。

こちらのプラグインにて、2.12.2→4.0.3へ移行を試みました。

1.既存システムの自動バックアップからtar.gzファイルを取得
2.ECCube4の管理画面よりプラグインインストール
3.バックアップファイルをアップロードすると「システムエラーが発生しました。」と表示されデータ移行が行えません。末尾記載ののエラーログが出ました。
4.エラーログ中ほどの「ConfigController->convertTz('2013-05-13 19:2...」という点は、dtb_customer.csvのcreate_dateカラム1行目のデータと一致していました。

こちら、何か解決の糸口はありそうでしょうか。
ご教示頂ければ有難く存じます。

[Eccube\Log\Logger:log:64] - システムエラーが発生しました。 ["DateTimeZone::__construct(): Unknown or bad timezone ()","/home/XXXXX-net/www/eccube2019/app/Plugin/DataMigration4/Controller/Admin/ConfigController.php",1346,"#0 /home/XXXXX-net/www/eccube2019/app/Plugin/DataMigration4/Controller/Admin/ConfigController.php(1346): DateTimeZone->__construct('')\n#1 /home/XXXXX-net/www/eccube2019/app/Plugin/DataMigration4/Controller/Admin/ConfigController.php(230): Plugin\DataMigration4\Controller\Admin\ConfigController->convertTz('2013-05-13 19:2...')\n#2 /home/XXXXX-net/www/eccube2019/app/Plugin/DataMigration4/Controller/Admin/ConfigController.php(130): Plugin\DataMigration4\Controller\Admin\ConfigController->saveToC(Object(Doctrine\DBAL\Connection), '/home/XXXXX-net...', 'dtb_customer')\n#3 /home/XXXXX-net/www/eccube2019/app/Plugin/DataMigration4/Controller/Admin/ConfigController.php(96): Plugin\DataMigration4\Controller\Admin\ConfigController->saveCustomer(Object(Doctrine\DBAL\Connection), '/home/XXXXX-net...')\n#4 /home/XXXXX-net/www/eccube2019/vendor/symfony/http-kernel/HttpKernel.php(151): Plugin\DataMigration4\Controller\Admin\ConfigController->index(Object(Symfony\Component\HttpFoundation\Request), Object(Doctrine\DBAL\Connection))\n#5 /home/XXXXX-net/www/eccube2019/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)\n#6 /home/XXXXX-net/www/eccube2019/vendor/symfony/http-kernel/Kernel.php(200): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)\n#7 /home/XXXXX-net/www/eccube2019/index.php(76): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))\n#8 {main}"] [POST, /管理画面ディレクトリ/data_migration4/config, XXX.116.114.34, https://www.XXXXX.net/管理画面ディレクトリ/data_migration4/config, Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36]

2.13.1から4.0.3のデータ移行時のエラーについて

お世話になります。
有用はプラグインの開発、ありがとうございます。

こちらのプラグインにて、2.13.1→4.0.3へ移行を試みました。

  1. 既存システムの自動バックアップからautobukup_20190911.tar.gzを取得
  2. ローカルに新規でECCube4をインストール
  3. オーナーズストアにてプラグイン購入処理、またECCube4の管理画面よりプラグインインストール
  4. 有効化→設定
  5. ファイルをアップロード

するとこのエラーが出ました。
https://gyazo.com/1ca3838e27abd6048ea15a9655206994

税金関係だったため、プラグインかな、、と思ったので、スクショをとりました。
◆既存のプラグイン
https://gyazo.com/8ab2dbdc8f0250886b7c6f132f2eda2b

◆既存のモジュール
https://gyazo.com/b4e087cb147c389200ec7056070dbd8b

こちら、何か解決の糸口はありそうでしょうか。

MySQLで、税設定が移行できない。

概要(Overview)

MySQLで、税設定が移行できない。

期待する内容(Expect) or 要望 (Requirement)

DB問わず、税設定が2系→4系に移行できる。

再現手順(Procedure)

1.移行元(2系)にて税設定を追加する。
2.バックアップデータを作成し、ダウンロードを行う
3.移行先(4系)にて本プラグインを用いて、データの移行を行う
4.管理画面→設定→店舗設定→税率設定を表示する

環境 (environment)

  • EC-CUBE: 4.0.2

  • PHP: 7.1.21

  • DB:

    • MySQL 5.5.60-MariaDB
  • EC-CUBE:2.13.5(移行元)

関連情報 (Ref)

バックアップデータが5.8Mあり、データ移行ができません。

お世話になります。書込の方法すら分からない状態での書込、申し訳ありません。

webshopオーナーです。
この度、2.13.5のwebshopを4.0.1に移行しようとしております。
なぜか、dtb_order_temp.csvが4.1MBもあり、バックアップデータ総量が5.8MBになっています。
バックアップデータの容量規制を少し緩めて頂くか、dtb_order_temp.csv等を初めとするでーたの減量の方法があれば、ご教授頂きたいと思っております。
古い(数年前)のバックアップデータからのデータ移行は、今のところ問題なく進んでいるようです。
ありがとうございます。

データ移行プラグイン4.2系 ファイルアップロードでエラー

こんにちは。

データ移行プラグイン(4.2系)で、EC-CUBE2.13からEC-CUBE4.2へのデータ移行を行っています。
しかし、プラグインインストール後に、EC-CUBE2.13のバックアップデータをアップロードするとエラーが表示されてしまいます・・・
原因が分からず困り果てています。
対応方法がお分かりになる方、いらっしゃいませんでしょうか・・・

INFO
15:30:35
php	User Deprecated: Method "Symfony\Component\HttpKernel\KernelInterface::getCacheDir()" might add "string" as a native return type declaration in the future. Do the same in implementation "Eccube\Kernel" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Symfony\Component\HttpKernel\KernelInterface::getLogDir()" might add "string" as a native return type declaration in the future. Do the same in implementation "Eccube\Kernel" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Symfony\Component\HttpKernel\KernelInterface::registerBundles()" might add "iterable" as a native return type declaration in the future. Do the same in implementation "Eccube\Kernel" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "ArrayAccess::offsetExists()" might add "bool" as a native return type declaration in the future. Do the same in implementation "Eccube\Entity\AbstractEntity" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "ArrayAccess::offsetSet()" might add "void" as a native return type declaration in the future. Do the same in implementation "Eccube\Entity\AbstractEntity" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "ArrayAccess::offsetGet()" might add "mixed" as a native return type declaration in the future. Do the same in implementation "Eccube\Entity\AbstractEntity" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "ArrayAccess::offsetUnset()" might add "void" as a native return type declaration in the future. Do the same in implementation "Eccube\Entity\AbstractEntity" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	Deprecated: Eccube\Entity\Customer implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary)
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::getContainerExtension()" might add "?ExtensionInterface" as a native return type declaration in the future. Do the same in child class "Eccube\EccubeBundle" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::getContainerExtension()" might add "?ExtensionInterface" as a native return type declaration in the future. Do the same in child class "Plugin\Api42\Bundle\ApiBundle" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Doctrine\DBAL\Types\Type::convertToDatabaseValue()" might add "mixed" as a native return type declaration in the future. Do the same in child class "Eccube\Doctrine\DBAL\Types\UTCDateTimeType" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Doctrine\DBAL\Types\Type::convertToPHPValue()" might add "mixed" as a native return type declaration in the future. Do the same in child class "Eccube\Doctrine\DBAL\Types\UTCDateTimeType" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Doctrine\DBAL\Types\Type::requiresSQLCommentHint()" might add "bool" as a native return type declaration in the future. Do the same in child class "Eccube\Doctrine\DBAL\Types\UTCDateTimeType" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Doctrine\DBAL\Types\Type::convertToDatabaseValue()" might add "mixed" as a native return type declaration in the future. Do the same in child class "Eccube\Doctrine\DBAL\Types\UTCDateTimeTzType" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Doctrine\DBAL\Types\Type::convertToPHPValue()" might add "mixed" as a native return type declaration in the future. Do the same in child class "Eccube\Doctrine\DBAL\Types\UTCDateTimeTzType" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Doctrine\DBAL\Types\Type::requiresSQLCommentHint()" might add "bool" as a native return type declaration in the future. Do the same in child class "Eccube\Doctrine\DBAL\Types\UTCDateTimeTzType" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.factory.service" service is deprecated, use "session.storage.factory.native", "session.storage.factory.php_bridge" or "session.storage.factory.mock_file" instead.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.native" service is deprecated, use "session.storage.factory.native" instead.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.metadata_bag" service is deprecated, create your own "session.storage.factory" instead.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Monolog\Formatter\FormatterInterface::format()" might add "mixed" as a native return type declaration in the future. Do the same in implementation "EasyCorp\EasyLog\EasyLogFormatter" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "base_template_class" option on Twig\Environment is deprecated since Twig 2.7.0.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Order::setDiscount()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Order::setDeliveryFeeTotal()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Order::setCharge()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Order::setTax()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Order::setTotal()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Order::setAddPoint()" method will require a new "$addPoint|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Order::setUsePoint()" method will require a new "$usePoint|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Cart::setTotal()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Cart::setDeliveryFeeTotal()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Cart::setDiscount()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Cart::setCharge()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Cart::setTax()" method will require a new "$total|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Cart::setAddPoint()" method will require a new "$addPoint|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: The "Eccube\Entity\Cart::setUsePoint()" method will require a new "$usePoint|int" argument in the next major version of its interface "Eccube\Entity\ItemHolderInterface", not defining it is deprecated.
{
    "exception": {}
}
INFO
15:30:35
php	Deprecated: Eccube\Entity\Member implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary)
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Class "Eccube\Entity\Member" should implement method "Symfony\Component\Security\Core\User\UserInterface::getUserIdentifier(): string": returns the identifier for this user (e.g. its username or email address).
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Symfony\Component\Security\Core\User\UserInterface::getRoles()" might add "array" as a native return type declaration in the future. Do the same in implementation "Eccube\Entity\Member" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}
INFO
15:30:35
php	User Deprecated: Method "Symfony\Component\Security\Core\User\UserInterface::getUsername()" might add "string" as a native return type declaration in the future. Do the same in implementation "Eccube\Entity\Member" now to avoid errors or add an explicit @return annotation to suppress this message.
{
    "exception": {}
}

受注データの取り込み時、特定のテーブルをスキップしたい

概要

受注データ取り込み時、dtb_payment, dtb_delivery等をスキップしたい

移行のステップ

予定しているサイト移行のステップは以下の通り

  1. 旧サイトから新サイトへの移行準備期間
    1. 旧サイトのデータをいったん移行する
    2. データ移行プラグインで対象外になっている商品画像や、フリーエリアの更新を行う
    3. 決済プラグイン・支払方法の設定を行う
  2. サイト切り替え当日に、会員・受注データを移行する
    1. 旧サイトをメンテナンス状態に変更
    2. 旧サイトでバックアップデータ取得
    3. 新サイトにて、会員・受注データを投入

修正案

2-3で、バックアップデータからdtb_products.csvを除けば会員・受注データのみ移行できるが、1-3で設定した支払方法が初期化されてしまう。

saveToO()で、ファイルがなければスキップするようにしたい。

https://github.com/EC-CUBE/data-migration-plugin/blob/master/Controller/Admin/ConfigController.php#L903

お届け時間でSQLエラー

お届け時間でIDの重複によりSQLエラーが発生する場合がある
dtb_deliv_timeが、deliv_id, time_idでユニーク制約のため

Unique violation: 7 ERROR:  duplicate key value violates unique constraint "dtb_delivery_time_pkey" DETAIL:  Key (id)=(1) already exists

backup_20191106.tar.gz

mtb_order_status problem.

Hello
I am have a new problem.

ec-cube 2 move to ec-cube 4, mtb_order_status can't be moved ?

I am create new mtb_order_status can't be save it .

WX20190716-111001

The history order detail show error.

WX20190716-111244
WX20190716-111218

助けてください、感謝します。

2.13.1から4.0.3のデータ移行時のエラーについて

お世話になります。
先日はご教示、ありがとうございました。
大変助かりました。

あれから正常と考えられるデータを取得でき、いざ実行したのですが、
下記エラーが発生しました。
https://gyazo.com/96410fcfa89dc0ff569b412149101086

圧縮したファイルを解凍し確認したところ、
https://gyazo.com/0a1de3660e12159bcdf90a22507b6eda
dtb_baseinfoは正常に存在することは確認しました。

こちら、一度現象を見ていただくことは可能でしょうか?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.