2

当我尝试在 infiniDB 上运行“创建表”sql 时,出现以下错误:

“错误代码:122 IDB-2010:无法执行 DDL/DML,因为会话 26 当前正在更新另一个表。”

Create Table sql 没有什么特别之处,它是这样的:

CREATE TABLE table_name
(
 col_1 smallint,
 col_2 bigint,
 create_date datetime
) ENGINE = InfiniDB DEFAULT CHARSET=utf8;

为什么会出现这个错误?

4

1 回答 1

2

发生这种情况是因为 InfiniDB 使用表锁定模型(至少对于导入作业),因此一次只能在表上运行单个修改。

在您的情况下,可能有一个作业当前正在运行或一个已经崩溃。如果即cpimport segfaults,这可以cppen。无论如何,使用以下命令检查锁定状态:

root@big1:~# /usr/local/Calpont/bin/viewtablelock 
 There is 1 table lock

  Table                       LockID  Process   PID    Session   Txn  CreationTime              State    DBRoots    
  mydb.stats_test             4673    cpimport  20855  BulkLoad  n/a  Wed Feb 18 11:48:04 2015  LOADING  1,2,3,4,5 

如果您确定此进程不再运行,您可以杀死并清理它:

/usr/local/Calpont/bin/cleartablelock 4673
于 2015-02-18T11:57:28.590 回答