CodeIgniter – номер ошибки: 1146 (таблица не существует после выполнения команды «CREATE TABLE»)

Я вчера опубликовал вопрос с синтаксисом обновления mySQL на CodeIgniter: CodeIgniter – Ошибка MySQL 1064 (таблица Update1 внутри таблицы join2 (…))

Но теперь, когда я решил эту проблему, появился еще один. Теперь запрос на обновление не знает новую созданную таблицу. Но если я перейду на инструкцию select, она работает плавно.

По этой причине я решил опубликовать полный сценарий.

Код:

<?php $this->load->database(); $query_tbaux='CREATE TABLE IF NOT EXISTS STUDY_LIST_AUX AS ( SELECT DISTINCT p.pat_id, p.pat_custom1 age, p.pat_name, p.pat_sex, s.study_iuid, p.pat_birthdate, s.accession_no, s.study_datetime date_s, s.study_desc, s.mods_in_study, s.pk, c.institution, s.study_block, s.study_urgent, \'0000-00-00 00:00:00\' AS \'report_date\', \'{null}\' AS \'report_status\', s.study_tipo, s.study_src, s.study_consulta FROM study s INNER JOIN patient p ON s.patient_fk = p.pk INNER JOIN series c ON c.study_fk = s.pk INNER JOIN rel_users_hosp u ON u.hosp_id = c.institution WHERE s.study_datetime >= \'2015-04-26 00:00:00\' AND s.study_datetime <= \'2015-04-30 23:59:59\' AND s.study_iuid IS NOT NULL AND u.user_id = \'admin\' )'; if ($this->db->query($query_tbaux)) { echo "Q True!<br><br>"; $data = array( 'STUDY_LIST_AUX.report_date' => "DATE_FORMAT(study_report.report_date,'%Y-%m-%d %h:%i:%s')", 'STUDY_LIST_AUX.report_status' => 'study_report.report_status', ); $this->db->update('STUDY_LIST_AUX, study_report', $data, array('STUDY_LIST_AUX.study_iuid'=>'study_report.study_iuid')); } else { echo "Q False<br><br>"; }; ?> 

Показать / Error:

Q Правда!

Ошибка базы данных Произошла

Номер ошибки: 1146

Таблица 'pacsdb.STUDY_LIST_AUX,' не существует

UPDATE STUDY_LIST_AUX, study_report SET STUDY_LIST_AUX . report_date = 'DATE_FORMAT (study_report.report_date, \'% Y-% m-% d% h:% i:% s \ ')', STUDY_LIST_AUX . report_status = 'study_report.report_status' WHERE STUDY_LIST_AUX . study_iuid = 'study_report.study_iuid'

Я проверил phpmyadmin после обновления страницы, и таблица действительно существует, и она содержит данные из оператора select. Можете ли вы рассказать мне, какую ошибку я сделал?

Related of "CodeIgniter – номер ошибки: 1146 (таблица не существует после выполнения команды «CREATE TABLE»)"

Это может вызвать у вас настоящую проблему. Исправьте, study_report после имени вашей таблицы. Попробуйте

 $this->db- >update('STUDY_LIST_AUX', $data, array('STUDY_LIST_AUX.study_iuid'=> 'study_report.study_iuid')); 

Обратите внимание.

Таблица 'pacsdb.STUDY_LIST_AUX,'

См. Эту запятую в конце? Этого не должно быть. Сообщение об ошибке является правильным.

Решение было более простым, чем кажется.

 $query_update = "UPDATE STUDY_LIST_AUX INNER JOIN study_report SET STUDY_LIST_AUX.report_date = DATE_FORMAT(study_report.report_date,'%Y-%m-%d %h:%i:%s'), STUDY_LIST_AUX.report_status = study_report.report_status WHERE STUDY_LIST_AUX.study_iuid = study_report.study_iuid"; $this->db->query($query_update); 

Кажется, что проблема связана с Framework CodeIgnigter для интегрированной функции обновления ($ this-> db-> update (…)). Он не работает с подзапросами, и лучшее решение для использования обычной функции выполнения запроса ($ this-> db-> update ($ query))

Во всяком случае, спасибо за помощь;) Все ваши ответы были очень полезны, чтобы добраться до этого решения.