【问题标题】:jt400 write record throws "CPF5035 Data mapping error"jt400 写入记录抛出“CPF5035 数据映射错误”
【发布时间】:2013-12-12 16:30:40
【问题描述】:

我有一张包含很多很多字段的表格。尝试使用 jt400 (flei00.write(newrec);) 插入数据时,我收到错误 CPF5035 Data mapping error on member FLEI00.。即使尝试插入空或几乎空的记录,错误消息也是一样的。有没有办法知道是哪个领域导致了问题?我已经和它斗争了一整天,不知道要检查什么:-(。任何帮助(例如在哪里寻找更多信息)将不胜感激。

【问题讨论】:

    标签: insert ibm-midrange db2-400 jt400


    【解决方案1】:

    在 IBM i 上,作业日志是查找有关给定作业中发生的错误的详细信息的地方。对于 JT400 作业,JT400 应用程序通过套接字连接到服务器作业。通常,有一堆这样的作业“预先启动”,等待连接。如果您不习惯 5250 界面,这可能很难导航。

    这是一个为您获取作业日志消息的 JT400 程序。如果您在收到错误的同一会话中运行此程序,您应该会看到有关导致问题的字段的详细信息。

    import java.util.*;
    import com.ibm.as400.access.*;
    
    public class TestJobLog {
        public static void main(String[] args) {
    
       int i = 0;
    
    try {
        AS400 system = new AS400();
    
       JobLog jobLog = new JobLog(system);
    
       // what attributes?
       jobLog.clearAttributesToRetrieve();
       jobLog.addAttributeToRetrieve(JobLog.MESSAGE_WITH_REPLACEMENT_DATA);
       jobLog.addAttributeToRetrieve(JobLog.MESSAGE_HELP_WITH_REPLACEMENT_DATA);
    
       // load the messages
       jobLog.load();
    
        // Create a list and subset it
        Enumeration list = jobLog.getMessages();
    
       System.out.println("There are " + Integer.toString(jobLog.getLength()) + " messages.");
    
        while (list.hasMoreElements())  {
          i++;
          QueuedMessage message = (QueuedMessage) list.nextElement();
            String text = message.getID() +
                        " " + message.getType() +
                        " " + message.getText() + "\n" +
                        " " + message.getMessageHelpReplacement() + "\n";
            System.out.println(Integer.toString(i) + " " + text);
            }
    
       jobLog.close();
    
        System.exit(0);
    
        } catch (Exception e) {
            System.out.println(e);
        }
    
    }
    }
    

    【讨论】:

    • 这些消息中没有什么有趣的 :-(。最后 2 个是:11 CPF5C61 4 客户端请求 - 运行程序 QSYS/QWCRTVCA。12 CPF5C61 4 客户端请求 - 运行程序 QGY/QGYOLJBL。
    • 有点像堆栈跟踪。那里有很多东西,但并非所有东西都直接与您的问题有关。专门寻找 CPF5035。 “帮助”文本应包含失败字段的详细信息。
    • ...请记住,有多个服务器作业在等待 JT400 连接。我很确定每个 '= new AS400()' 都连接到不同的服务器作业。因此,我强调您需要探索失败的同一进程的作业日志。如果作业日志消息看起来太多,请将作业名称提供给 IBM i 管理员,她可以从房子的绿屏一侧为您查看作业日志。
    • 我在catch 子句中有JobLog jobLog = new JobLog(as400)as400 是我连接的系统。但是没有人在相关日志中没有发现任何关于错误的信息 :-( 怀疑落在日期字段上;但我将日期写入同一程序中的其他表并且效果很好。
    • 问题出在日期字段上:其中一个有 3=NOT NULL WITH DEFAULT 空值并且没有设置。
    猜你喜欢
    • 2017-02-17
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多