3

モデルでこの sql ルーチンを実行する必要があります。

$this->db->query('LOCK TABLE orders WRITE');
$this->db->query('TRUNCATE TABLE orders');
$this->db->query('INSERT INTO orders SELECT * FROM orders_tmp');
$this->db->query('UNLOCK TABLES');

しかし、私はこのエラーが発生します:

エラー番号: 1192
要求されたコマンドを実行できません: テーブルがロックされているか、トランザクションが
TRUNCATE TABLE 命令を実行しています

このテーブルの DB エンジンとして MyISAM を使用します。

手伝っていただけませんか?

4

3 に答える 3

1

同時挿入が不可能な場合にテーブル real_table で多くの INSERT および SELECT 操作を実行するには、行を一時テーブル temp_table に挿入し、一時テーブルの行で実テーブルを定期的に更新します。これは、次のコードで実行できます。

mysql> LOCK TABLES real_table WRITE, temp_table WRITE;

うまくいかない場合は、お気軽にお問い合わせください。

于 2012-07-18T12:19:47.527 に答える
1

これを試して

$this->db->query('TRUNCATE TABLE orders');
$this->db->query('LOCK TABLE orders WRITE');
$this->db->query('INSERT INTO orders SELECT * FROM orders_tmp');
$this->db->query('UNLOCK TABLES');
于 2015-04-10T20:26:33.810 に答える