Не удается подключиться к внешней базе данных с помощью Codeigntier - PullRequest
1 голос
/ 19 августа 2011

Я хочу, чтобы Codeigntier подключался к базе данных MySQL на другом сервере (не локальном). Как мне настроить это в файле config / database.php?

Я установил имя хоста на IP-адрес с правильным именем пользователя / паролем, но он не работает.

Полученная ошибка говорит:

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

Ответы [ 4 ]

3 голосов
/ 20 августа 2011

Heru, похоже, вы просто хотите изменить текущую конфигурацию БД с localhost на ваш работающий сервер.Для этого откройте файл database.php в папке application/config.Затем найдите эти строки.

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = ''; // might be empty or might be full 
$db['default']['database'] = 'your_database';

и измените его на это.,.

$db['default']['hostname'] = 'your_host_name'; 
$db['default']['username'] = 'your_user_name';
$db['default']['password'] = 'your_password';
$db['default']['database'] = 'your_new_database';

в зависимости от того, используете ли вы общий хост или нет, и другие факторы.Ваш хост может предоставить вам новое имя хоста, может потребовать пароль и может предоставить вам предварительно сконфигурированное имя базы данных.Посмотрите на хост-провайдера для этих частей информации.

, если это не сработает.,.

Вы также можете попытаться изменить его на этот, который находит IP-адрес вашего сервера и преобразует его в именованный адрес, но ваша база данных может находиться или не находиться по другому адресу.Но это стоит того.

$hostIP = $_SERVER['SERVER_ADDR'];
(string)$hostname = gethostbyaddr($hostIP);

$db['default']['hostname'] = $hostname; 
$db['default']['username'] = 'your_user_name';
$db['default']['password'] = 'your_password';
$db['default']['database'] = 'your_new_database';

также, если вы уверены в IP своей базы данных, измените вышеуказанное значение

(string)$hostname = gethostbyaddr($hostIP)

на

(string)$hostname = gethostbyaddr('10.11.12.123'); // with your IP #

1 голос
/ 20 августа 2011

Это мне кажется проблемой с правами доступа к базе данных, а не проблемой CI. Возможно, вы не авторизованы для подключения с вашего IP. Что происходит, когда вы запускаете это на какой-то случайной странице PHP:

mysql_connect($server, $un, $pw) or die( mysql_error());

Чтобы это исправить, просто запустите:

GRANT SELECT, DELETE, UPATE, INSERT ON $dbname.% TO $un@% IDENTIFIED BY ('$pw')
0 голосов
/ 24 августа 2015
You can easily Crated multiple database connection using codeigniter

    $db['default']['hostname'] = "localhost:3306";
    $db['default']['username'] = "root";
    $db['default']['password'] = "";
    $db['default']['database'] = "buy599_erp";
    $db['default']['dbdriver'] = "mysql";
    $db['default']['dbprefix'] = "";
    $db['default']['pconnect'] = TRUE;
    $db['default']['db_debug'] = TRU`enter code here`E;
    $db['default']['cache_on'] = FALSE;
    $db['default']['cachedir'] = "";
    $db['default']['char_set'] = "utf8";
    $db['default']['dbcollat'] = "utf8_general_ci";

    $db['magento6']['hostname'] = "localhost:3306";
    $db['magento6']['username'] = "root";
    $db['magento6']['password'] = "";
    $db['magento6']['database'] = "magento6";
    $db['magento6']['dbdriver'] = "mysql";
    $db['magento6']['dbprefix'] = "";
    $db['magento6']['pconnect'] = TRUE;
    $db['magento6']['db_debug'] = TRUE;
    $db['magento6']['cache_on'] = FALSE;
    $db['magento6']['cachedir'] = "";
    $db['magento6']['char_set'] = "utf8";
    $db['magento6']['dbcollat'] = "utf8_general_ci";

    $db['magento6stalkbuylove']['hostname'] = "localhost:3306";
    $db['magento6stalkbuylove']['username'] = "root";
    $db['magento6stalkbuylove']['password'] = "";
    $db['magento6stalkbuylove']['database'] = "magento6stalkbuylove";
    $db['magento6stalkbuylove']['dbdriver'] = "mysql";
    $db['magento6stalkbuylove']['dbprefix'] = "";
    $db['magento6stalkbuylove']['pconnect'] = TRUE;
    $db['magento6stalkbuylove']['db_debug'] = TRUE;
    $db['magento6stalkbuylove']['cache_on'] = FALSE;
    $db['magento6stalkbuylove']['cachedir'] = "";
    $db['magento6stalkbuylove']['char_set'] = "utf8";
    $db['magento6stalkbuylove']['dbcollat'] = "utf8_general_ci";
0 голосов
/ 20 августа 2011

Triq,

Вы можете добавить другой набор конфигурации базы данных в файл config/database.php (поверх набора default), как показано ниже (вы можете изменить dbwrite на другое имя, которое выкак):

$db['dbwrite']['hostname'] = "[other db host]";
$db['dbwrite']['username'] = "[other db username]";
$db['dbwrite']['password'] = "[other db password]";
$db['dbwrite']['database'] = "[other db name]";
$db['dbwrite']['dbdriver'] = "mysql";
$db['dbwrite']['dbprefix'] = "";
$db['dbwrite']['pconnect'] = FALSE;
$db['dbwrite']['db_debug'] = FALSE;
$db['dbwrite']['cache_on'] = FALSE;
$db['dbwrite']['cachedir'] = "";
$db['dbwrite']['char_set'] = "utf8";
$db['dbwrite']['dbcollat'] = "utf8_general_ci";

Затем вы можете получить эту ссылку на БД, используя следующий код:

$dbw = $this->load->database('dbwrite',TRUE);
$dbw->query(xxx); // this will execute the query on the other db

Убедитесь, что dbwrite это то же имя, которое вы используете на другомдб конфиг.$this относится к $CI экземпляру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...