有数据库表fsr_system_log
的架构fsr_appl
列message
的规模有限。该表应该存储系统日志消息。柱的大小是255和数据类型是varchar2
。用于保存信息的大小实现的逻辑是超过255个字符是:数据不被保存在数据库中,由于现场
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);
}
但是,尽管实施代码,我面对以下错误:
Failed to save system log due to SQL error: ORA-12899: value too large for column "FSR_APPL". "FSR_SYSTEM_LOG". "MESSAGE" (actual: 257, maximum: 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。
你使用Java?它看起来像你,但它可能是另一种语言。这可能是一个Java问题。可能有非ASCII字符以UTF-8表示为多字节字符。如果是这样,做一个子字符串到255个字符将超过255个字节。调用子字符串结果的getBytes,并获取字节数组的大小。 –
@MarlinPierce是的..我使用JAVA。如果使用子字符串不会有帮助,那么我们有什么替代方法? – San