开箱即用的 CodeIgniter 不会连接到 Google Cloud SQL 实例,需要修改 CI 数据库驱动程序文件,这是因为 CI 期望它的选择是连接到本地主机或远程 tcpip 主机,这是开发人员从未预料到的任何人都想直接连接到套接字。
出于性能原因,我选择使用 Mysqli 驱动程序而不是 Mysql,以下是我的做法:
步骤1)编辑codeigniter/system/database/drivers/mysqli/mysqli_driver.php文件并将db_connect函数替换为以下代码:
function db_connect()
{
if(isset($this->socket)){
return mysqli_connect(null, $this->username, null, $this->database, null, $this->socket);
}
elseif ($this->port != ”)
{
return mysqli_connect($this->hostname, $this->username, $this->password, $this->database, $this->port);
}
else
{
return mysqli_connect($this->hostname, $this->username, $this->password, $this->database);
}
}
步骤 2) 更改应用程序的 config/database.php(或任何您想要声明数据库设置的位置) - 根据您的应用程序,您可以选择将“数据库”添加到 yourapp/config/autoload.php 中的自动加载数组中,或者您可以选择手动调用load->database()函数。这假设您的应用程序名称是“myappname”。适当地替换 APPENGINE-ID 和 DATABASE-INSTANCE-ID 以及 YOUR_DATABASE_NAME。
$db[‘myappname’][‘hostname’] = ‘localhost’;
$db[‘myappname’][‘username’] = ‘root’;
$db[‘myappname’][‘password’] = null;
$db[‘myappname’][‘database’] = ‘YOUR_DATABASE_NAME’;
$db[‘myappname’][‘dbdriver’] = ‘mysqli’;
$db[‘myappname’][‘pconnect’] = FALSE;
$db[‘myappname’][‘dbprefix’] = ‘’;
$db[‘myappname’][‘swap_pre’] = ‘’;
$db[‘myappname’][‘db_debug’] = FALSE;
$db[‘myappname’][‘cache_on’] = FALSE;
$db[‘myappname’][‘autoinit’] = FALSE;
$db[‘myappname’][‘char_set’] = ‘utf8’;
$db[‘myappname’][‘dbcollat’] = ‘utf8_general_ci’;
$db[‘myappname’][‘cachedir’] = ”;
$db[‘myappname’][‘socket’] = ‘/cloudsql/APPENGINE-ID:DATABASE-INSTANCE-ID’;
Viola,您的 CodeIgniter 应用程序现在应该能够连接您的 Google Cloud MySQL 数据库并与之通信!
现在,如果您想要真正喜欢并启用数据库缓存,可以更改 CI 代码以使用 memcache(最快)或 Google Cloud Storage(更有保证的持久性),但我不会在本博客中介绍这一点……
礼貌地回答http://arlogilbert.com/post/67855755252/how-to-connect-a-codeigniter-project-to-google-cloud