Я столкнулся с некоторой проблемой вставки данных в базу данных оракула (11g) с помощью codeigniter.
сначала мой файл database.php:
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'turjo';
$db['default']['password'] = '123';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'oci8';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
то в моем контроллере..
$conn = oci_connect('turjo', '123', 'localhost');
if($conn) {
echo "connected";
}
else {
echo "not";
}
который дает мне connected
.
то я пробовал..
$query = $this->db->query('SELECT * FROM METERREADING_CIBL');
$data = $query->result_array();
print_r($data);
который дает мне массив Array ( [0] => Array ( [RDGN_ID] => 1 [REB_OFF_CODE] => 01 [BILL_MONTH] => JAN [METER_NO] => 1122 [BOOK_NO] => 1122 [ACC_NO] => 1122 [CRDGN] => 1 [RDGN_FLAG] => 1 [RDGN_REF_NUM] => 1 [REC_STATUS] => 1 ) )
теперь я хочу вставить некоторые данные в таблицу METERREADING_CIBL
я попробовал:
$data['REB_OFF_CODE'] = "01";
$data['BILL_MONTH'] = "FEB";
$data['METER_NO'] = "1122";
$data['BOOK_NO'] = "1122";
$data['ACC_NO'] = "1122";
$data['CORDGN'] = 1;
$data['RDGNFLAG'] = "1";
$data['RDGN_REF_NUM'] = "1";
$data['REC_STATUS'] = "1";
$this->db->insert('METERREADING_CIBL', $data);
и другим способом:
$this->db->query('INSERT INTO "METERREADING_CIBL" ("REB_OFF_CODE", "BILL_MONTH", "METER_NO", "BOOK_NO", "ACC_NO", "CORDGN", "RDGNFLAG", "RDGN_REF_NUM", "REC_STATUS") VALUES ("02", "FEB", "1122", "1122", "1122", "1", "1", "1", "1")');
но в обоих случаях я получил следующую ошибку:
Проблема с двойными кавычками. Скопируйте свою инструкцию и запустите на своем SQL Developer. Вы найдете недопустимый символ ("")
Для получения дополнительной информации см. Ссылку CodeIgniter - ActiveRecords и Oracle - конфигурация
Одна из возможных причин:
Поле RGDN_ID
не настроено для автоматического заполнения.
Это эквивалентно тому, что нужно было бы вставить в таблицу MySQL, у которой нет своего AUTO_INCREMENT
для первичного ключа, и вы сами не указали этот идентификатор.
Попросите вашего администратора базы данных помочь вам.
Обновить:
У вас есть опечатки в именах полей, которые вы пытаетесь вставить:
RDGNFLAG
против RDGN_FLAG
CORDGN
против CRDGN
RGDN_ID
установлено с автоматическим приращением, и для этого используется триггер. @Narf
VARCHAR2(6)
это тип данных для BILL_MONTH