TODO #17275

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

Added by 村上 彬 about 5 years ago. Updated about 5 years ago.

Status:終了Start date:
Priority:通常Due date:
Assignee:村上 彬% Done:

100%

Category:-
Target version:4.0.5

Description

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いずれも不具合を確認した。


Associated revisions

Revision 97f8422f
Added by a-killer-bee about 5 years ago

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

Revision 1ff3aaef
Added by a-killer-bee about 5 years ago

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

History

#1 Updated by Anonymous about 5 years ago

  • Status changed from 担当 to 解決
  • % Done changed from 0 to 100

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

#2 Updated by 江頭 竜二 about 5 years ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF