Я начал изучать миграции CodeIgniter, которые улучшают стандарты разработки для моей новой работы.
Но по какой-то причине я не могу создать какую-либо таблицу в своей базе данных.
Над кодом миграции:
<code><php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_Create_users_table extends CI_Migration {
public function __construct()
{
parent::__construct();
$this->load->dbforge();
}
public function up()
{
$fields = array(
'user_id' => array(
'type' => 'INT',
'constraint' => 11,
'unique' => TRUE,
'null' => FALSE,
'auto_increment' => TRUE
),
'user_name' => array(
'type' => 'VARCHAR',
'constraint' => '255',
'null' => FALSE,
),
'user_email' => array(
'type' => 'VARCHAR',
'constraint' => '255',
'null' => FALSE,
),
'user_password' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'user_status' => array(
'type' => 'INT',
'constraint' => 1,
'default' => 0
),
'user_permissions' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'device_token' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'user_level' => array(
'type' => 'INT',
'constraint' => 3,
'default' => '=9'
),
'user_photo' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'device_snid' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'user_recovery_token' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'client' => array(
'type' => 'INT',
'constraint' => 11,
'null' => FALSE,
'default' => 0
),
'latitude' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'longitude' => array(
'type' => 'VARCHAR',
'constraint' => '255',
)
);
$this->dbforge->add_field($fields);
$this->dbforge->add_key('user_id', TRUE);
$attributes = array('ENGINE' => 'InnoDB');
try{
$this->dbforge->create_table('users',TRUE,$attributes);
echo '<pre>Table created
';} catch (исключение $ e) {echo '
Error creating table.
';д ($ е);} $ this-> db-> query ("INSERT INTO` users` VALUES (1, 'SYSTEM', 'NOUSERNAME', '111', 0, NULL, NULL, NULL, -9, NULL, NULL, NULL, 1, НОЛЬ НОЛЬ)");} public function down () {$ this-> dbforge-> drop_table ('users', TRUE);}}
Имя файла миграции: /aplication/migrations/20181129120800_Create_users_table.php
Метод контроллера для запуска миграции:
public function do_migration($version = NULL)
{
$this->load->library('migration');
if(isset($version) && ($this->migration->version($version) === FALSE))
{
show_error($this->migration->error_string());
}
elseif(is_null($version) && $this->migration->latest() === FALSE)
{
show_error($this->migration->error_string());
}
else
{
echo 'The migration has concluded successfully.';
}
}
CodeIgniter создает 'миграции'Таблица и установить "версию" в качестве временной метки имени файла, как и ожидалось.
Таблица 'users' не создана.Отладочное сообщение "таблица создана" печатается.
Если я тестирую метод $ this-> dbforge-> create_table ('users', TRUE, $ attribute); возвращает false .
Попытка отладки и попытка / отлов для ошибок, но единственным результатом является bool (false) .
Если я создаю какую-либо таблицу и выбираю данные на ней, CI возвращает ее, какожидается, потому что соединение с БД в порядке.
РЕДАКТИРОВАТЬ
Найдите проблему: внутри полей была опечатка на уровне user_level, где по умолчанию было установлено "= 9"(недействительное целое число), когда оно должно было быть "-9".