Using MySQL with Yii

I did everything what are requested to do to use MySQL instead of SQLlite.

here is adive: http://www.kevinkorb.com/post/21

But it appears that absolute nothing happens with MySQL database after making changes to main.php.

It looks like Yii doesn’t even care what i have written down in main.php becouse i can give

db parameters as a ("‘somethingUnImportant’=‘nothing’) and applacion keeps running using SQLlite correctly.

What it could be?

main.php still had got the call from main app becouse when trying echo ‘isCalled’, the text appears in the top of the application.

Thanks in advance!

It’s difficult to help you without seeing your main.php… Post it here…

here we go:




<?php


// uncomment the following to define a path alias

// Yii::setPathOfAlias('local','path/to/local-folder');


// This is the main Web application configuration. Any writable

// CWebApplication properties can be configured here.


echo 'jee';

return array(

	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',

	'name'=>'My Web Application',


	// preloading 'log' component

	'preload'=>array('log'),


	// autoloading model and component classes

	'import'=>array(

		'application.models.*',

		'application.components.*',

	),


	'modules'=>array(

		// uncomment the following to enable the Gii tool

		/*

		'gii'=>array(

			'class'=>'system.gii.GiiModule',

			'password'=>'Enter Your Password Here',

		),

		*/

	),


	// application components

	'components'=>array(

		'user'=>array(

			// enable cookie-based authentication

			'allowAutoLogin'=>true,

		),

		// uncomment the following to enable URLs in path-format

		/*

		'urlManager'=>array(

			'urlFormat'=>'path',

			'rules'=>array(

				'<controller:\w+>/<id:\d+>'=>'<controller>/view',

				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

			),

		),

		*/

		/*

		'db'=>array(

			'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',

		),

		*/

		

		// uncomment the following to use a MySQL database

		'db'=>array(

			'connectionString' => 'mysql:host=localhost;dbname=portfolio',

			'emulatePrepare' => true,

			'username' => 'root',

			'password' => '',

			'charset' => 'utf8',

		),

		

		

		'errorHandler'=>array(

			// use 'site/error' action to display errors

            'errorAction'=>'site/error',

        ),

		'log'=>array(

			'class'=>'CLogRouter',

			'routes'=>array(

				array(

					'class'=>'CFileLogRoute',

					'levels'=>'error, warning',

				),

				// uncomment the following to show log messages on web pages

				/*

				array(

					'class'=>'CWebLogRoute',

				),

				*/

			),

		),

	),


	// application-level parameters that can be accessed

	// using Yii::app()->params['paramName']

	'params'=>array(

		// this is used in contact page

		'adminEmail'=>'webmaster@example.com',

	),

);



could it be becouse i have changed the folders name like "testdrive" to "application".

i also find that my phpmyadmin warns:




Your configuration file contains settings (root with no password) that correspond to the default MySQL privileged account. Your MySQL server is running with this default, is open to intrusion, and you really should fix this security hole by setting a password for user '.root'.



could it be something to deal with the problem…

main.php seems OK to me…

the root password is not set in MySQL that’s just a security issue and why you get a warning in pgpmysql, but it’s not the reason why your code is not connecting to mysql

Have you tryed to create a model? Have you got any error?

if you use yii framework on your localhost (homecomputer), and if you using application like xampp

http://www.apachefriends.org/en/xampp.html you have to try setup your password this should solve your issue.

and type your password in configuration

Okey, now i have made new user in mysql which is poiting to localhost with all privileges to database "portfolio". Also global priviledges are set to be "all priviledges".

User name and password is "test".

And the main.php looks like this




...

		'db'=>array(

			'connectionString' => 'mysql:host=localhost;dbname=portfolio',

			'emulatePrepare' => true,

			'username' => 'test',

			'password' => 'test',

			'charset' => 'utf8',

		),

...



Still nothing special happens. I wonder do the yii make new database just calling index.php in browser or is there some URL what I should call to initialize new MySQL database?

Becouse I think it is still using SQLite becouse you can log in and log out normally, which should not be possible action without database.

But thanks for advices!

try this




 'db'=>array(

            'class'=>'CDbConnection',

            'connectionString' => 'mysql:dbname=portfolio;host=127.0.0.1',

            'emulatePrepare' => true,

            'username' => 'test',

            'password' => 'test',

            'charset' => 'utf8',

        ),






Seems to me that you need to study Yii a bit more… have you read the definitive guide to Yii ?

Yii does not initialize the database or create any table… you have to do it with some other tools like phpMyAdmin…

You can log in because the default code generated by Gii does not use a database for logging in… it has fixed username/password as "admin/admin" or "demo/demo"

But again… check the guide… there are explained all this "starter" steps…

You are right, i was just assuming that Yii will be generate database automatically, I forgot it have to be created manually as well as model class.

Im trying to enter gii-> Model generator and it appears that something is wrong.

PDO::__construct() [<a href=‘pdo.–construct’>pdo.–construct</a>]: [2002] Invalid argument (trying to connect via unix://)




00309:         error_log($this->connectionString,3, "/tmp/errors.txt");

00310: 

00311:         return new $pdoClass($this->connectionString,$this->username,

00312: $this->password,$this->_attributes);

00313:     }



I echoed those variables in error log and they seemed to be pointing my created database(with necessary user table) but maybe I’m going to find next solutation with my self, or at least I hope so…

Thanks, mdomba!