2013-08-02 4 views
2

Когда я пытаюсь запустить «Создать таблицу» SQL на infiniDB, я получаю следующее сообщение об ошибке:InfiniDB: Невозможно выполнить DDL/DML ошибку

"Error Code: 122 IDB-2010: Unable to perform DDL/DML because session 26 is currently updating another table."

Создание таблицы SQL ничего необычного, это что-то вроде этого:

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

Почему эта ошибка возникает?

ответ

2

Это происходит потому, что InfiniDB использует модель блокировки таблицы (по крайней мере, для импортных заданий), поэтому только одна модификация может выполняться одновременно за столом.

В вашем случае может быть работа, выполняемая в настоящее время, или одна из них, которая разбилась. Это может привести к сокращению, если, например, cpimport segfaults. в любом случае, проверьте состояние блокировки с помощью команды:

[email protected]:~# /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 
Смежные вопросы