数据库
首页 > 数据库> > mysql – 如何使用CodeIgniter连接到Google Cloud SQL数据库?

mysql – 如何使用CodeIgniter连接到Google Cloud SQL数据库?

作者:互联网

我在Google App Engine上的CodeIgniter应用无法连接到Google Cloud SQL上的数据库.我尝试了很多东西.

>当我离开数据库用户名,密码和时,我的网站加载数据库名称为空,但具有数据库调用的页面显示错误.它说没有选择数据库.
>我注意到我的数据库没有创建并创建了一个新数据库和一个拥有所有权限的用户.我在我的应用程序中输入了此详细信息,现在它甚至没有连接到数据库服务器.没有页面服务.
>当我只删除用户名& database.php中的密码字段,它连接到数据库服务器但不连接到数据库.

我检查了mysql数据库的用户,我的用户拥有所有权限.我检查了所有拼写,这是正确的.该应用程序在本地工作.我如何修复此问题?我只是无法连接它.

解决方法:

开箱即用CodeIgniter不会连接到Google Cloud SQL实例,需要修改CI数据库驱动程序文件,这是因为CI期望它可以选择连接到localhost或远程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(或者要声明数据库设置的wherver) – 根据您的应用程序,您可以选择将“database”添加到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提供

标签:google-cloud-sql,mysql,codeigniter,google-app-engine,database
来源: https://codeday.me/bug/20191007/1868051.html