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 つの行を挿入するだけのカスタム クラスです。