質問 > 管理機能 > CSVアップロードを失敗しても、自動連番が作動しないようにしたい |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
468 |
投稿日時: 2017/3/22 16:07
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: CSVアップロードを失敗しても、自動連番が作動しないようにしたい CSVインポート時にエラーがある場合、
トランザクションをロールバックさせる事でデータをCSVのインポート前の状態に戻しているようですが、 DBの仕様上、MySQLのオートインクリメントやPostgreSQLのシーケンスはロールバックでは元に戻りません。 これは複数のトランザクションを並行して走らせた場合でも、お互いをブロックしない状態でも値が重複しないようにする為の仕組みのようです。 (IDが抜けている事は大した問題ではありませんが、重複してしまうのは致命的ですので) もし、ECCUBEで対応するとすれば、1つのループでデータチェックと格納を同時に行うのではなく、 先にすべてのデータチェックを終わらせてから、格納処理を行うようにすれば、この問題は対応できるのでは無いでしょうか? 単純にループが2倍になりますが・・・。
|
umebius |
投稿日時: 2017/3/22 11:57
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: CSVアップロードを失敗しても、自動連番が作動しないようにしたい 確かに気持ち悪いですね。
失敗した時であればIDのMAX値とって参考URLの下記SQLをDoctrineで実行すればいけますかね。 ALTER TABLE <tablename> AUTO_INCREMENT = <max+1>;(MySQL) どなたか良い方法お願い致します。
|
YOHBUN |
投稿日時: 2017/3/22 10:56
対応状況: −−−
|
常連 登録日: 2016/12/20 居住地: 投稿: 69 |
Re: CSVアップロードを失敗しても、自動連番が作動しないようにしたい ブランクができた際に、不具合は今のところ出ていませんので、
ブランクができるのが気持ちが悪いということぐらいでしょうか。。w 自らの運用でしたら、その都度手動で値を修正するという方法でできますが、運用が別の人間で行いますので。。 不具合がなければ、問題なしということであきらめるしかなさそうですね。 ありがとうございました! |
umebius |
投稿日時: 2017/3/19 13:16
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: CSVアップロードを失敗しても、自動連番が作動しないようにしたい 自動化したいというのはプログラマなのでわかります。
アップロード失敗した時に自力で戻してやれば良いのでは? http://stackoverflow.com/a/12455513
|
tao_s |
投稿日時: 2017/3/19 7:10
対応状況: −−−
|
仙人 登録日: 2008/8/20 居住地: 東京 投稿: 799 |
Re: CSVアップロードを失敗しても、自動連番が作動しないようにしたい IDの値にブランクができると具体的に何が困るのでしょうか?
|
YOHBUN |
投稿日時: 2017/3/14 10:43
対応状況: −−−
|
常連 登録日: 2016/12/20 居住地: 投稿: 69 |
CSVアップロードを失敗しても、自動連番が作動しないようにしたい ▼テンプレート
[EC-CUBE] 3系 商品CSVのアップロードに失敗した場合(エラーがメッセージが出る)、 自動的にIDの連番機能が作動してしまうのは改善できないでしょうか? こうなると、IDの値にブランクができてしまいます。 ですので、アップロードを失敗するたびに、 DBに入り、関連するテーブルのAUTO INCREMENTの値を変更する手間が発生しています。 この作業をなくすため、失敗した際でもAUTO INCREMENTの値はアップ前のままにはできないでしょうか。 いろいろとずれて困っています。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |