スキーマmessage
のデータベース テーブルに列があります。このテーブルは、システム ログ メッセージを格納することになっています。列のサイズは 255 で、データ型は. サイズが 255 文字を超えるメッセージを保存するために実装されたロジックは次のとおりです。fsr_system_log
fsr_appl
varchar2
public void saveSystemLog(SystemLogRequest systemLog){
User user = systemLog.getUser();
String system = systemLog.getSystem();
Log log = systemLog.getSystemLog();
try {
initializeDelegate();
delegate.beginTransaction();
LogEntry[] logEntries = log.getItemArray();
for (LogEntry logEntry : logEntries) {
// Save each entry
ParamVector<Object> params = new ParamVector<Object>();
//Check if message is greater than 255 characters
String message = logEntry.getMsg();
notifier.debug("Log Message is : " + message);
if(message.length()>255){
message = message.substring(0,255);
notifier().debug("Message string greater than 255 characters : " + message);
}
params.add(message, 255, false);
}
しかし、コードを実装しているにもかかわらず、次のエラーに直面しています:
SQL エラーのため、システム ログを保存できませんでした: ORA-12899: 列 "FSR_APPL" の値が大きすぎます。「FSR_SYSTEM_LOG」。"MESSAGE" (実際: 257、最大: 255)
使用されているサンプル ログは次のとおりです。
<xbe:systemLogRequest xmlns:xbe="http://tdc.dk/fsr/common/xbean">
<user>
<userNumber>a62267</userNumber>
</user>
<system>Client</system>
<systemLog>
<item>
<timestamp>2011-10-27T17:03:08.404+02:00</timestamp>
<type>Info</type>
<msg><![CDATA[<html><center>Din registrering er nu sendt<br><br>Tak for indmeldingen</center></html>]]></msg>
</item>
<item>
<timestamp>2011-10-27T17:03:13.701+02:00</timestamp>
<type>Info</type>
<msg><![CDATA[<html><center>Din registrering er nu sendt<br><br>Tak for indmeldingen</center></html>]]></msg>
</item>
<item>
<timestamp>2011-10-28T12:45:47.801+02:00</timestamp>
<type>Info</type>
<msg><![CDATA[<html><center>Din registrering er nu sendt<br><br>Tak for indmeldingen</center></html>]]></msg>
</item>
<item>
<timestamp>2011-10-28T12:45:57.926+02:00</timestamp>
<type>Info</type>
<msg>Afsluttet uden at gemme fejlregistering</msg>
</item>
</systemLog>
</xbe:systemLogRequest>
助けてください!
注 :スローされるエラーは、特定のシステム ログ メッセージに対してのみ発生します。このエラーがスローされている場合、実際の値は常に定数 257 です。