質問 > フロント機能 > dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
bio |
投稿日時: 2019/8/13 1:50
対応状況: −−−
|
一人前 登録日: 2013/3/13 居住地: 投稿: 81 |
dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 いつもお世話になっております。
dtb_orderに挿入するorder_idの桁数は現行9桁まで許容されるようですが、それを10桁以上に設定する必要があり、以下を参考に、mtb_constants.php、そして管理者画面のパラメータ設定のINT_LENを10以上に設定するなどして試しておりますが、桁数が9桁を超えると(10以上になると)dtb_orderにorder_idが挿入されません。 https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=9520&forum=1 どのファイルのどこの設定を変更すれば、上記を実現できるかご教授頂けませんでしょうか。 MySQL5.0.77 apache2 Windows XP 5.0.22 EC-CUBE 2.X系 |
red |
投稿日時: 2019/8/16 18:23
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1568 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 bigint型に変える必要があるのではないでしょうか
|
bio |
投稿日時: 2019/8/17 22:03
対応状況: −−−
|
一人前 登録日: 2013/3/13 居住地: 投稿: 81 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 red様
お時間を頂きまして感謝致します。 order_idのデータ型をbigintに変更することにより、10桁の整数をdtb_orderのorder_idに挿入することができました。 ただし、11桁以上は挿入されません。 別のソースからもこのdtb_orderにデータを挿入しておりますが、その場合、order_idの桁数は何桁でも問題なく挿入される様です。 ですので、eccube 2系のデフォルトのLC_Page_Shopping_Confirm.php、SC_Helper_Purchase.phpを使用して挿入する際に、11桁以上であれば、挿入できない何らかの制約があるのだろうと考えております。 参考にしたリンク内でも記載されておりますが、bit数が影響しているのでしょうか? 何かお分かりになりますでしょうか? |
red |
投稿日時: 2019/8/19 9:03
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1568 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 dtb_order_order_id_seq も修正が必要なのではないでしょうか
|
bio |
投稿日時: 2019/8/19 10:49
対応状況: −−−
|
一人前 登録日: 2013/3/13 居住地: 投稿: 81 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 red様
お時間を頂きまして本当に感謝いたします。 ここでのdtb_order_order_id_seqの設定には問題がなく、他の何らかの設定により、11桁以上のorder_idがdtb_orderに挿入できない設定になっていると思われます。 いろいろと試しておりますが、分かりません。 |
red |
投稿日時: 2019/8/19 10:59
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1568 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 dtb_order_temp も直しましたか?
|
bio |
投稿日時: 2019/8/19 15:50
対応状況: −−−
|
一人前 登録日: 2013/3/13 居住地: 投稿: 81 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 red様
お時間を頂きまして感謝いたします。 dtb_order, dtb_order_order_id_seq, dtb_order_detail, dtb_order_detail_order_detail_id_seq, そしてdtb_order_tempの調整は事前にしておりました。 別のソースからdtb_orderにデータを挿入すると、order_idの桁数が11桁以上でも挿入されます。 ですから、LC_Page_Shopping_Confirm.php、SC_Helper_Purchase.php関連のファイル、あるいはそれに関連する設定にて桁数、あるいはサイズを制約する箇所があるのではないかと考え試しておりますが、見つけることができません。 |
red |
投稿日時: 2019/8/19 16:08
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1568 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 2.13.5で見る限り制約などないかと思います。
詳しいバージョンがわからないのでアドバイスが難しいですが、 ・桁数が11桁以上の場合、どうなるのでしょうか? LC_Page_Shopping_Confirm に 以下のようなコードが有ると思いますが、ここで11桁以上の値は返ってきていますか? $this->arrForm['order_id'] = $objPurchase->getNextOrderID();
|
bio |
投稿日時: 2019/8/19 23:47
対応状況: −−−
|
一人前 登録日: 2013/3/13 居住地: 投稿: 81 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 red様
お時間を頂きまして本当に感謝いたします。 バージョンは2.12.5です。 申し訳ございません。11桁以上というよりは、厳密には2147483647以上の整数(例:1566225446510)を挿入しようとすると、int型、あるいはbigint型のカラムに格納できる最大値の整数が2147483647であるためだと思われますが、2147483647がdtb_orderのorder_idに挿入されます。 そして次のオーダー(2147483647以上の整数)を挿入しようとすると、上記と同じ理由で、再度2147483647を挿入しようとして以下の様なエラーが発生する様でございます。 しかしながら、他のソースからこのdtb_orderのorder_idにデータを挿入する際にはこの2147483647以上の整数(例:1566225446510)が挿入されます。 MDB2 Error: constraint violation _doQuery: [Error message: Could not execute statement] [Last executed query: EXECUTE mdb2_statement_mysql_45834afbf3487650c249301e814e45c295538c6d9d USING @0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10] [Native code: 1062] [Native message: Duplicate entry '2147483647' for key 'PRIMARY'] on [/var/www/vhosts/xxxxxxx.com/httpdocs/data/class/SC_Query.php(1089)] from xxxxxxxxxx customer_id = 456 /var/www/vhosts/xxxxxxx.com/httpdocs/shopping/confirm.php(34): LC_Page_Shopping_Confirm_Ex->process /var/www/vhosts/xxxxxxx.com/httpdocs/data/class_extends/page_extends/shopping/LC_Page_Shopping_Confirm_Ex.php(56): LC_Page_Shopping_Confirm->process /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/pages/shopping/LC_Page_Shopping_Confirm.php(42): LC_Page_Shopping_Confirm->action /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/pages/shopping/LC_Page_Shopping_Confirm.php(218): SC_Helper_Purchase->completeOrder /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/helper/SC_Helper_Purchase.php(81): SC_Helper_Purchase->registerOrderComplete /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/helper/SC_Helper_Purchase.php(896): SC_Helper_Purchase->registerOrderDetail /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/helper/SC_Helper_Purchase.php(990): SC_Query->insert /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/SC_Query.php(602): SC_Query->query /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/SC_Query.php(896): SC_Query->execute /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/SC_Query.php(1052): SC_Query->error /var/www/vhosts/xxxxxxx.com/httpdocs/data/class/SC_Query.php(1089): trigger_error |
red |
投稿日時: 2019/8/20 9:27
対応状況: −−−
|
神 登録日: 2010/2/15 居住地: 東京都 投稿: 1568 |
Re: dtb_orderのorder_idを10桁以上でも挿入できるように設定したいです。 はい
dtb_order.order_id はbigintになっているのがわかりました。 ↓ $this->arrForm['order_id'] = $objPurchase->getNextOrderID(); ここで、返ってきている値は、いくつですか? ↓ dtb_order_temp.order_id には、いくつが入っていますか? (ここがintだと切り捨てられて最大値が入る気がするので、ここが原因だと思うのですが?)
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |