basercms icon indicating copy to clipboard operation
basercms copied to clipboard

[baserCMS4系]sqlite利用時、ゴミ箱にコンテンツがひとつでも存在するときにコンテンツを追加・削除すると、ツリー構造に不整合が発生する

Open fuchigam1 opened this issue 2 years ago • 2 comments

概要

sqliteを利用しているときに、ゴミ箱にひとつでもコンテンツが存在した状態でコンテンツを追加すると、コンテンツツリー構造に重複番号が追加され不整合が発生する。 sc_sqlite_data

削除した場合も不整合が発生し、lft, rghtと両方が重複し、かつ欠番が発生する。 sc_sqlite_contents

複数個まとめて(フォルダ+下位コンテンツ)ゴミ箱に入れる → 一発で壊れる 情報を得たので追記。

baserCMS version : 4.8.0-dev と4.5.4。

備考

  • mysql環境では発生しない
  • php 7.4 環境

fuchigam1 avatar Sep 12 '23 15:09 fuchigam1

5系でも同様に発生するか確認が必要そうですね

ryuring avatar Sep 13 '23 02:09 ryuring

4系のContentモデルから SoftDeleteビヘイビア外すと物理削除にはなるけどツリー(lft, rght)は壊れないようでした。 おそらくSQLiteのときのSoftDeleteの挙動が問題のようです。 SoftDeleteありで削除するときの挙動をMySQLと比較して見ていると、先に削除扱いにしちゃうのかlft rghtの値が更新されない感じの挙動な気がします。(MySQLのときはSoftDeleteしたコンテンツのlft, rghtも更新される)

kaburk avatar Sep 13 '23 03:09 kaburk