InfiniDB: невозможно выполнить ошибку DDL/DML
Когда я пытаюсь запустить sql "Create Table" на infiniDB, я получаю следующую ошибку:
"Код ошибки: 122 IDB-2010: невозможно выполнить DDL/DML, поскольку сеанс 26 в настоящее время обновляет другую таблицу".
Создание таблицы sql не является чем-то необычным, это что-то вроде этого:
CREATE TABLE table_name
(
col_1 smallint,
col_2 bigint,
create_date datetime
) ENGINE = InfiniDB DEFAULT CHARSET=utf8;
Почему происходит эта ошибка?
1 ответ
Это происходит из-за того, что InfiniDB использует модель блокировки таблиц (по крайней мере, для заданий импорта), поэтому одновременно для таблицы может выполняться только одна модификация.
В вашем случае, возможно, в данный момент выполняется задание или сбой. Это может произойти, если, например, cpimport segfaults. в любом случае, проверьте состояние блокировки с помощью команды:
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