Как подключиться к базе данных SQL Server из CodeIgniter 3? - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь подключить проект CodeIgniter 3 к SQL Server 2008 на веб-сервере, работающем с WAMP.

Я попытался подключиться к базе данных с помощью sqlsrv, odbc и pdo dbdrivers, но не смог сделать это до сих пор.

Вот то, что я пробовал до сих пор,

  1. Установил драйверы sqlsrv для PHP и установил их.
  2. sqlsrv и pdo_sqlsrv отображаются на странице локального хоста WAMP и на странице phpinfo ()

enter image description here

Это мой файл database.php,

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => '172.20.15.52',
    'username' => 'ivrserver',
    'password' => 'ivrserver',
    'database' => 'HMS-Migration',
    'dbdriver' => 'sqlsrv',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE

);

Однако я получаю эту ошибку на каждой странице проекта,

A Database Error Occurred

Unable to connect to your database server using the provided settings.
Filename: C:/wamp64/www/ghms/system/database/DB_driver.php
Line Number: 436

Я пыталсяиспользовать разъем ODBC.Я сделал системный DNS из источников данных ODBC, который подключается к базе данных SQL Server и изменил файл database.php следующим образом:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mssqltest',
    'username' => 'ivrserver',
    'password' => 'ivrserver',
    'database' => 'HMS-Migration',
    'dbdriver' => 'odbc',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

Это позволяет подключиться к базе данных, но получается Query Builder не работает с ODBC .¯ \ _ (ツ) _ / ¯

Затем я повернулся, чтобы попробовать pdo для подключения к SQL Server, и внес следующие изменения в database.php

$db['default'] = array(
    'dsn'   => 'sqlsrv:server=172.20.15.52,1433;Database=HMS-Migration',
    'hostname' => '',
    'username' => 'ivrserver',
    'password' => 'ivrserver',
    'database' => '',
    'dbdriver' => 'pdo',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

. Это требует от меня установкидрайверы sql для PHP, но я думаю, что они у меня уже есть!

A Database Error Occurred

SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712

Filename: C:/wamp64/www/ghms/system/database/drivers/pdo/pdo_driver.php
Line Number: 142

Я вернулся, чтобы проверить установку моего драйвера,

  1. У меня php 7.0.32 x64 с безопасностью потоковenabled
  2. Проверено C: \ wamp64 \ bin \ php \ php7.0.32 \ ext на правильность .dll
php_pdo_sqlsrv_7_ts_x64.dll
php_sqlsrv_7_ts_x64.dll
Проверено, файл php.ini
extension=php_pdo_sqlsrv_7_ts_x64.dll
extension=php_sqlsrv_7_ts_x64.dll
Оба расширения отображаются в трее в меню wamp как включенные расширения PHP

Вопрос,

Хотя я проверил все, что было в моих силах, так как он все еще не 'Я не могу подключиться к базе данных - я где-то ошибаюсь.Как правильно подключить проект CodeIgniter 3 к SQL Server?

Редактировать

Я думаю, что нашел решение.Ошибка на pdo dbdriver просила меня установить драйвер ODBC для MS SQL, но я вместо этого проверил драйвер PHP для MS SQL.Я перешел по ссылке в сообщении об ошибке, загрузил драйвер ODBC и теперь он работает!Глупый я!

1 Ответ

0 голосов
/ 21 января 2019

попробуйте это. Определите ваш sqlsrv:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mssqltest',
    'username' => 'ivrserver',
    'password' => 'ivrserver',
    'database' => 'HMS-Migration',
    'dbdriver' => 'sqlsrv',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...