Yii Framework Forum: Problem with creating a new project in chapter 5 - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Problem with creating a new project in chapter 5

#1 User is offline   JovanS 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 05-October 10

Posted 05 October 2010 - 01:14 PM

Hi, big newbie here. Following chapter 5 of the book and while creating projects using the tests worked for me, when I try to create a new project using CRUD by typing a project name and description in the form and leaving the rest blank I get the following error:


CDbException

Description

CDbCommand failed to execute the SQL statement: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '' for column 'create_time' at row 1

Source File

C:\localhost\htdocs\yii\framework\db\CDbCommand.php(234)

00222: if($this->_connection->enableProfiling)
00223: Yii::endProfile('system.db.CDbCommand.execute('.$this->getText().')','system.db.CDbCommand.execute');
00224:
00225: return $n;
00226: }
00227: catch(Exception $e)
00228: {
00229: if($this->_connection->enableProfiling)
00230: Yii::endProfile('system.db.CDbCommand.execute('.$this->getText().')','system.db.CDbCommand.execute');
00231: Yii::log('Error in executing SQL: '.$this->getText().$par,CLogger::LEVEL_ERROR,'system.db.CDbCommand');
00232: $errorInfo = $e instanceof PDOException ? $e->errorInfo : null;
00233:
00234: throw new CDbException(Yii::t('yii','CDbCommand failed to execute the SQL statement: {error}',
00235: array('{error}'=>$e->getMessage())),(int)$e->getCode(),$errorInfo);
00236: }
00237: }
00238:
00239: /**
00240: * Executes the SQL statement and returns query result.
00241: * This method is for executing an SQL query that returns result set.
00242: * @param array input parameters (name=>value) for the SQL execution. This is an alternative
00243: * to {@link bindParam} and {@link bindValue}. If you have multiple input parameters, passing
00244: * them in this way can improve the performance. Note that you pass parameters in this way,
00245: * you cannot bind parameters or values using {@link bindParam} or {@link bindValue}, and vice versa.
00246: * binding methods and the input parameters this way can improve the performance.
Stack Trace

#0 C:\localhost\htdocs\yii\framework\db\ar\CActiveRecord.php(1000): CDbCommand->execute()
#1 C:\localhost\htdocs\yii\framework\db\ar\CActiveRecord.php(759): CActiveRecord->insert(NULL)
#2 C:\localhost\htdocs\trackstar\protected\controllers\TblProjectController.php(72): CActiveRecord->save()
#3 C:\localhost\htdocs\yii\framework\web\actions\CInlineAction.php(50): TblProjectController->actionCreate()
#4 C:\localhost\htdocs\yii\framework\web\CController.php(300): CInlineAction->run()
#5 C:\localhost\htdocs\yii\framework\web\filters\CFilterChain.php(133): CController->runAction(Object(CInlineAction))
#6 C:\localhost\htdocs\yii\framework\web\filters\CFilter.php(41): CFilterChain->run()
#7 C:\localhost\htdocs\yii\framework\web\CController.php(1049): CFilter->filter(Object(CFilterChain))
#8 C:\localhost\htdocs\yii\framework\web\filters\CInlineFilter.php(59): CController->filterAccessControl(Object(CFilterChain))
#9 C:\localhost\htdocs\yii\framework\web\filters\CFilterChain.php(130): CInlineFilter->filter(Object(CFilterChain))
#10 C:\localhost\htdocs\yii\framework\web\CController.php(283): CFilterChain->run()
#11 C:\localhost\htdocs\yii\framework\web\CController.php(257): CController->runActionWithFilters(Object(CInlineAction), Array)
#12 C:\localhost\htdocs\yii\framework\web\CWebApplication.php(324): CController->run('create')
#13 C:\localhost\htdocs\yii\framework\web\CWebApplication.php(121): CWebApplication->runController('tblproject/crea...')
#14 C:\localhost\htdocs\yii\framework\base\CApplication.php(135): CWebApplication->processRequest()
#15 C:\localhost\htdocs\trackstar\index.php(13): CApplication->run()
#16 {main}
2010-10-05 20:00:45 Apache/2.2.16 (Win32) PHP/5.3.3 Yii Framework/1.1.4


any help would be much appreciated.
0

#2 User is offline   jefftulsa 

  • Advanced Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 168
  • Joined: 06-October 08
  • Location:Austin, TX

Posted 05 October 2010 - 09:24 PM

Are you using MySQL, or a different RDBMS as you follow along?

If MySQL, ensure your tbl_project is of the form:

CREATE TABLE IF NOT EXISTS `tbl_project` (
`id` INTEGER NOT NULL auto_increment,
`name` varchar(128) NOT NULL,
`description` text NOT NULL,
`create_time` DATETIME default NULL,
`create_user_id` INTEGER default NULL,
`update_time` DATETIME default NULL,
`update_user_id` INTEGER default NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
;

It might be that due to your database configuration settings and potentially not explicitly allowing for NULL values in the DATETIME fields when creating the table, it does not like submitting blank values for these fields.

On another quick note, it looks as if you are following along in the book using the latest stable version of Yii (1.1.4), which is fine as ALL of the concepts and most of the examples translate to this newer version. However the book is using 1.1.2 and there may be some subtle differences in the code examples that surface from time to time. Just wanted you to be aware of that.
0

#3 User is offline   JovanS 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 05-October 10

Posted 06 October 2010 - 09:57 AM

thanks, managed to figure it out!
after some looking at the mysql manuals I found that STRICT_TRANS_TABLES mode was set in my mysql configuration file which prevented it from taking dates that contain zeros.
0

#4 User is offline   hopie83 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 08-January 11

Posted 08 January 2011 - 07:24 AM

I've got the same problem...

Where and how can I change this STRICT_TRANS_TABLES property on a windows machine?
0

#5 User is offline   Stuey 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 30-January 11
  • Location:UK

Posted 30 January 2011 - 05:42 AM

I've just started to learn Yii using the book and had this same problem. Seems the default install of MySQL (I'm not using XAMPP or WAMPP) sets the DB mode to strict as JovanS has found - thanks for posting the solution.

View Posthopie83, on 08 January 2011 - 07:24 AM, said:

I've got the same problem...

Where and how can I change this STRICT_TRANS_TABLES property on a windows machine?


It is a setting within your MySQL config file, usually in the root of your installation folder in a file called my.ini

The line may be slightly different on your installation, mine was:
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

...which I changed to:
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Works fine.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users