Codeigniter - 连接 MySQL 和 SQL 服务器的致命错误
Codeigniter - Fatal error to connect MySQL and SQL Server
我需要在同一应用程序中连接到 MySQL 和 SQL 服务器。我的 php 版本 5.6.11 和 codeigniter 3.0.1。我按照以下步骤建立连接:
我下载这个文件并粘贴到xampp\php\ext
php_sqlsrv_56_ts
php_pdo_sqlsrv_56_ts
像这样编辑 php.ini 文件:
分机=php_sqlsrv_56_ts.dll
分机=php_pdo_sqlsrv_56_ts.dll
database.php
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'vtp',
'dbdriver' => 'mysqli',
'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
);
$db['biodb'] = array(
'hostname' => '192.168.20.231',
'username' => 'abzalali',
'password' => '',
'database' => 'pdata',
'dbdriver' => 'sqlsrv',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'autoinit' => TRUE,
'stricton' => FALSE,
);
控制器:
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class biodb extends CI_Controller {
public function __construct() {
parent::__construct();
$this->sqlsrvr = $this->load->database('biodb', true);
}
public function index() {
$query = $biodb->get('arb_protest_pp');
foreach ($query->result() as $row)
echo $row->id;
}
}
然后我在 url 中调用控制器 'biodb',并得到错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65488 bytes) in C:\xampp\htdocs\vtp\system\database\DB_driver.php on line 771
之后:
我在这个函数
中的 "DB_Driver.php" 中添加了一个新行“$this->db_select();
”
public function simple_query($sql)
{
if ( ! $this->conn_id)
{
$this->initialize();
}
$this->db_select();
return $this->_execute($sql);
}
然后我又收到另一个错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65488 bytes) in C:\xampp\htdocs\vtp\system\database\DB_driver.php on line 642
我真的没有发现我到底错过了什么。我需要使用 codeigniter active record 这个 sqlserver 数据库。
我在过去使用带 CodeIgniter 的直接 sqlsrv 驱动程序 运行 遇到过很多问题。
我会通过在您的 databbase.php 配置文件中执行以下操作将您的 sqlsrv 转换为 pdo_sql_srv:
$db['biodb'] = array(
'hostname' => '192.168.20.231',
'username' => 'abzalali',
'password' => '',
'database' => 'pdata',
'dbdriver' => 'pdo',
'subdriver' => 'sqlsrv',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'autoinit' => TRUE,
'stricton' => FALSE,
);
我也很惊讶您在控制器中的 index 方法上没有收到未定义的 var 错误。尝试将其更改为:
public function index() {
//you need to call the database property you
//created in your construct which appears to be sqlsrvr
$query = $this->sqlsrvr->get('arb_protest_pp');
foreach ($query->result() as $row) {
echo $row->id;
}
}
我需要在同一应用程序中连接到 MySQL 和 SQL 服务器。我的 php 版本 5.6.11 和 codeigniter 3.0.1。我按照以下步骤建立连接:
我下载这个文件并粘贴到xampp\php\ext
php_sqlsrv_56_ts
php_pdo_sqlsrv_56_ts像这样编辑 php.ini 文件:
分机=php_sqlsrv_56_ts.dll
分机=php_pdo_sqlsrv_56_ts.dll
database.php
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'vtp',
'dbdriver' => 'mysqli',
'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
);
$db['biodb'] = array(
'hostname' => '192.168.20.231',
'username' => 'abzalali',
'password' => '',
'database' => 'pdata',
'dbdriver' => 'sqlsrv',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'autoinit' => TRUE,
'stricton' => FALSE,
);
控制器:
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class biodb extends CI_Controller {
public function __construct() {
parent::__construct();
$this->sqlsrvr = $this->load->database('biodb', true);
}
public function index() {
$query = $biodb->get('arb_protest_pp');
foreach ($query->result() as $row)
echo $row->id;
}
}
然后我在 url 中调用控制器 'biodb',并得到错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65488 bytes) in C:\xampp\htdocs\vtp\system\database\DB_driver.php on line 771
之后: 我在这个函数
中的 "DB_Driver.php" 中添加了一个新行“$this->db_select();
”
public function simple_query($sql)
{
if ( ! $this->conn_id)
{
$this->initialize();
}
$this->db_select();
return $this->_execute($sql);
}
然后我又收到另一个错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65488 bytes) in C:\xampp\htdocs\vtp\system\database\DB_driver.php on line 642
我真的没有发现我到底错过了什么。我需要使用 codeigniter active record 这个 sqlserver 数据库。
我在过去使用带 CodeIgniter 的直接 sqlsrv 驱动程序 运行 遇到过很多问题。
我会通过在您的 databbase.php 配置文件中执行以下操作将您的 sqlsrv 转换为 pdo_sql_srv:
$db['biodb'] = array(
'hostname' => '192.168.20.231',
'username' => 'abzalali',
'password' => '',
'database' => 'pdata',
'dbdriver' => 'pdo',
'subdriver' => 'sqlsrv',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'autoinit' => TRUE,
'stricton' => FALSE,
);
我也很惊讶您在控制器中的 index 方法上没有收到未定义的 var 错误。尝试将其更改为:
public function index() {
//you need to call the database property you
//created in your construct which appears to be sqlsrvr
$query = $this->sqlsrvr->get('arb_protest_pp');
foreach ($query->result() as $row) {
echo $row->id;
}
}