当尝试从 Greenplum 运行 SQL 事务时。收到此错误。
Transaction (Process ID 52) was deadlocked on lock resources with
another process and has been chosen as the deadlock victim.
Rerun the transaction.
我们尝试了 :
在 SQL 服务器上它正在工作但我们想在 greenplum 上编写相同的事务
Transaction A
RETRY: -- Label RETRY
BEGIN TRANSACTION
BEGIN TRY
truncate table tablename
WAITFOR DELAY '00:00:05' -- Wait for 5 ms
Insert into tablename
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Rollback Transaction'
ROLLBACK TRANSACTION
IF ERROR_NUMBER() = 1205 -- Deadlock Error Number
BEGIN
WAITFOR DELAY '00:00:00.05' -- Wait for 5 ms
GOTO RETRY -- Go to Label RETRY
END
END CATCH
输出 :
这包括
使用 greenplum 语法转换提到的 sql 事务(重试和 try/catch)块。
随着进程 ID 不断变化,在传递到事务时要避免硬编码值。
3.另外,我试图理解这个错误属于我们用greenplum编写的SQL SERVER OR transaction。
talend中的数据流为:
**Read from MS SQL SERVER >> write into hdfs >> load into greenplum**
任何帮助将不胜感激?