2

infiniDB で「Create Table」SQL を実行しようとすると、次のエラーが発生します。

「エラー コード: 122 IDB-2010: セッション 26 が現在別のテーブルを更新しているため、DDL/DML を実行できません。」

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 が (少なくともインポート ジョブに対して) テーブル ロック モデルを使用しているため、一度に 1 つの変更しかテーブルに対して実行できないために発生します。

あなたの場合、現在実行中のジョブまたはクラッシュしたジョブがある可能性があります。これは、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
于 2015-02-18T11:57:28.590 に答える