TODO #17275

長いファイル名のブログアイキャッチ画像が保存できない

村上 彬4ヶ月前に追加. 2ヶ月前に更新.

ステータス:終了開始日:
優先度:通常期日:
担当者:村上 彬進捗率:

100%

カテゴリ:-
対象バージョン:4.0.5

説明

MySQL 5.6 以降で Strict Mode (システム変数 sql_mode = STRICT_TRANS_TABLES)の場合に、
ファイル名が30文字以上のアイキャッチ画像が保存できない。

原因
アイキャッチのカラム varchar(30) へブログ記事保存時に元のファイル名で保存し、
BcUploadビヘイビアのafterSaveのタイミングでyyyy/mm/0000xxxのファイル名に変更して
再度保存している為。

Strict Modeではない時はvarchar(30)に30文字以上のファイル名を保存しても
ファイル名の後半が切れて30文字だけ一旦保存されエラーは出ない。

しかし、Strict Modeでは30文字を超える為、厳密なチェックが行われ、
[PDOException] SQLSTATE22001: String data, right truncated: 1406 Data too long for column 'eye_catch' at row 1
のSQLエラーが発生し、アイキャッチ画像が保存されない。

改善案
ブログ記事保存時に元のファイル名を保存しないようにするか、
varchar(30)をtextなどに変更する必要がありそうです。

発生環境
発生する可能性のある環境としては、MySQL 5.6 以降で Strict Modeの場合。
CPIのMySQL5.6が該当していた。
baserCMS3、baserCMS4いずれも不具合を確認した。


関係しているリビジョン

リビジョン 97f8422f
a-killer-bee が4ヶ月前に追加

fix #17275 長いファイル名のブログアイキャッチ画像が保存できない対応 (#612)

リビジョン 1ff3aaef
a-killer-bee が4ヶ月前に追加

fix #17275 長いファイル名のブログアイキャッチ画像が保存できない対応 (#611)

履歴

#1 匿名ユーザー が4ヶ月前に更新

  • ステータス担当 から 解決 に変更
  • 進捗率0 から 100 に変更

更新履歴 basercms|commit:97f8422f6be29acab8739f4e4430bf1be70d64e6 で適用されました。

#2 江頭 竜二2ヶ月前に更新

  • ステータス解決 から 終了 に変更

他の形式にエクスポート: Atom PDF