0

3 つのアプリケーションが 1 つの codeigniter インストールを共有するプロジェクトがあります。mysqlテーブルの名前を変更し、データベースへの新しい変更を反映するようにクエリを変更するまで、うまく機能していました。挿入クエリがキャッシュされ、古いテーブル (もう存在しない) に値を挿入しようとしているようです。これは私がこれまでに試したことです:

CI:

$this->db->cache_delete_all()

mysql:

RESET QUERY CACHE;

config/database.php で:

$db['default']['db_debug'] = TRUE; 
$db['default']['cache_on'] = FALSE;

db_debug 構成が TRUE に設定されている場合は 500 エラーが発生し、FALSE の場合はエラーをキャッチできましたが、存在しない古いテーブルに挿入しようとしていることが判明しました。これがどのように可能かわかりません。プロジェクト全体を検索しても、プロジェクトのどこにも古いテーブル名が見つかりません。CIキャッシュフォルダーも空です。どんな助けでも大歓迎です。

編集:私の挿入コード:

if($this->db->insert('booking_calendar', $data))
{
    $booking_id = $this->db->insert_id();           
    $this->load->helper('string');


    $order_id = strtoupper(random_string('alnum', 6)) . $booking_id;


    $data = array(
      'id'                  => $order_id,
      'booking_calendar_id' => $booking_id,
      'status'              => 'PAYMENT_PENDING'                            
    );

    if($this->db->insert('bookings', $data))
    {
        $this->notifications->add($MYSELF['id'], 'Court successfully booked.');
        return $order_id;   
    }

    $this->notifications->add($MYSELF['id'], 'Court booking failed.', 'warning');
    return false;
}
else
{               
    log_message('ERROR', 'Insert booking_calendar failed. ' . print_r($this->db->_error_message(), true));
}

そして、これは私のログの出力です:

ERROR - 2013-09-23 20:05:13 --> Insert booking_calendar failed. Table 'tennis.courts_calendar' doesn't exist

通知は、「通知」テーブルに 1 つの行を挿入するだけのカスタム クラスです。

4

1 に答える 1

0

私の問題に対する答えが見つかりました。テーブルにON BEFORE INSERT/UPDATEトリガーがありました。名前を変更すると、同じテーブルに新しい名前で挿入すると、新しい名前ではなく古いテーブル名が引き続きトリガーされることがわかりました。そのため、トリガーを更新したところ、機能するようになりました。この観点からは些細なことに見えますが、私には時間がかかったので、これが他の誰かの時間を節約できることを願っています.

于 2013-09-23T18:46:57.287 に答える