CodeIgniter dbutil - проблема при создании БД - PullRequest
0 голосов
/ 13 мая 2011

Попытка выполнить настройку для моего приложения. Однако у меня возникли проблемы с его созданием базы данных для меня.

Если я создаю базу данных вручную, все в порядке.
Если базы данных там нет, я ничего не могу сделать, и я получаю следующую ошибку:

Произошла ошибка базы данных Невозможно выбрать указанную базу данных: my_db

Имя файла: core / Loader.php

Номер строки: 232

Я следую руководству по dbutil .
Мой код:

    function index()
    {
      $db_exists = FALSE;
      $this->load->dbutil();
      if(  $this->dbutil->database_exists( 'my_db' ) ){
        $db_exists = TRUE;
      }
    } 

Согласно руководству, мой драйвер базы данных работает в application / config / autoload.php

$autoload['libraries'] = array( 'database', 'datamapper' );

1 Ответ

1 голос
/ 16 мая 2011

Ваша база данных уже указана в конфигурационном файле database.php?

Что вам, вероятно, нужно будет сделать, это установить параметры подключения и оставить имя базы данных пустым

$db['default']['database'] = '';

Затемвы все еще можете автоматически загрузить класс базы данных, а затем загрузить класс dbutil, чтобы проверить его.После проверки и / или создания вам потребуется вернуть имя базы данных в конфигурацию database.php.

В качестве альтернативы вы можете удалить класс базы данных из автозагрузки и загрузить его на каждый необходимый контроллер.Затем в вашем инсталляционном контроллере вы можете загрузить его без имени базы данных, используя массив DSN или $ config в соответствии с документами: http://www.codeignitor.com/user_guide/database/connecting.html

function index()
{
  $dsn = 'mysql://myuser:mypass@localhost';
  $this->load->database($dsn);
  $this->load->dbutil();
  $db_exists = FALSE;
  $this->load->dbutil();
  if(  $this->dbutil->database_exists( 'my_db' ) ){
    $db_exists = TRUE;
  }
} 
...