# 数据任务故障排除

本节介绍在处理数据任务时可能会发生的问题以及如何解决问题。

## 环境错误故障排除

当数据任务遇到环境错误（例如超时、网络错误或连接错误）时，数据任务将自动重试该操作。如果重试后未解决错误，数据任务将停止运行，并显示状态错误和错误消息。

* 具有只能通过 数据移动网关 访问的数据源的登陆任务：

  以 5 秒的间隔重试操作无数次。

  如果停机时间较长，则间隔加倍，直到达到 1800 秒的间隔。

* 具有无需 数据移动网关 即可访问的数据源的登录任务、存储任务、转换任务和数据集市任务：

  该操作将重试 3 次，间隔 1 秒。

执行以下操作：

1. 使用错误消息解决错误。

2. 重载或恢复数据任务的操作。

## 使用特定表排除问题

如果数据任务在写入特定表时遇到错误，该数据任务将继续运行。出错表将显示状态错误和错误消息。

1. 使用错误消息解决错误。

2. 重新加载出错的表。

## CDC 问题疑难解答

使用满负载并持续更新变动更新模式的登陆数据任务可能会遇到与 CDC 相关的问题，这些问题会影响整个任务，并且无法通过重载特定的表来解决。问题的示例包括丢失事件、源数据库重组引起的问题或读取源数据库事件时失败。

您可以将所有表重载到目标以解决此类问题。

1. 停止数据任务和所有使用它的任务。

2. 打开数据任务，然后选择监视器选项卡。

3. 点击 ...，然后重新加载目标。

这将使用 Drop-Create 将所有表重新加载到目标，并将从现在起重新启动所有更改数据捕获。

* 消耗登陆数据任务的存储任务将通过比较重新加载，并在下次运行时应用以保持同步。现有历史将被保留。类型 2 历史记录将更新，以反映执行重新加载和比较进程后的变化。

  类型 2 历史记录中的起始日期的时间戳将反映重新加载日期，而不一定是源中发生更改的日期。

* 在重新加载目标操作期间以及在存储同步之前，存储实时视图将不可靠。存储将在以下情况下完全同步：

  * 使用比较和应用重新加载所有表，

  * 每个表执行一个更改周期。

有关更多信息，请参阅[将所有表重新加载到目标。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/Landing-data-data-sources.htm#Reloadin)。

## 主键列中存在 NULL 值

执行数据任务时可能会收到错误消息：Unknown execution error - NULL result in a non-nullable column.

可能的原因

用作主键的列不能包含 NULL 值，并且应不可为 NULL。

建议的操作

在源数据任务中，添加一个将所有 NULL 值转换为值的表达式，例如 0。

还可以选择另一列用作主键。

## 使用 Redshift 作为数据平台时出现转换错误

使用 Redshift 作为数据平台时，您可能会遇到以下错误或类似错误：找不到从“未知”到变化字符的转换函数

可能的原因

缺少常数表达式的转换。由于最终查询的复杂性更高，这种情况在数据集市中可能会更频繁地发生。

建议的操作

将常数表达式转换为文本。

示例：

```
cast ('my constant string' as Text)
```

## 不明确的列名

当您基于在 Qlik Talend Data Integration 管道中创建的视图注册数据时，该视图可能包含由 Qlik Talend Data Integration 生成的列。这些列的名称（以 hdr\_ 开头）被保留。当在存储任务中使用具有保留名称的列时，存储任务将创建具有相同保留名称的栏，从而导致命名冲突。例如，您可以有两个名为 hdr\_key\_hash 的列。

有关视图中保留列名的详细信息，请参阅[视图](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Storage/dataset-tables.htm#Views)。

建议的操作

重命名存储数据任务中来自已注册数据任务的列。例如，将 hdr\_\_key\_hash 重命名为 my\_\_key\_hash。

## 转换不会应用于现有数据

您在任务中使用现有数据添加或更改了转换，但再次准备和运行任务时，新的或更改的转换只会应用于新数据。

建议的操作

如果要对所有现有数据应用新的或已更改的转换，请重新加载所有受影响数据表。