Database Migration -

Hello!

I’m trying to do a database migration, and the error that is get from the console is -> Parse error: syntax error, unexpected ‘project_id’ (T_STRING), expecting ‘)’ in

C:\xampp\htdocs\xxxx\protected\migrations\m140924_213510_create_issue_user_

and_assignment_tables.php on line 53

Following is the code (i have marked where is line 53)


<?php


class m140924_213510_create_issue_user_and_assignment_tables extends CDbMigration

{

	public function up()

	{

		

	}


	public function down()

	{

		echo "m140924_213510_create_issue_user_and_assignment_tables does not support migration down.\n";

		return false;




	}


	

	// Use safeUp/safeDown to do migration with transaction

	public function safeUp()

	{

		$this->createTable('tbl_issue', array(

          'id' => 'pk',

          'name' => 'string NOT NULL',

          'description' => 'text',

          'project_id' => 'int(11) DEFAULT NULL',

          'type_id' => 'int(11) DEFAULT NULL',

          'status_id' => 'int(11) DEFAULT NULL',

          'owner_id' => 'int(11) DEFAULT NULL',

          'requester_id' => 'int(11) DEFAULT NULL',

          'create_time' => 'datetime DEFAULT NULL',

          'create_user_id' => 'int(11) DEFAULT NULL',

          'update_time' => 'datetime DEFAULT NULL',

          'update_user_id' => 'int(11) DEFAULT NULL',

          ), 'ENGINE=InnoDB');




			$this->creteTable('tbl_user', array(

				'id' => 'pk',

				'username' => 'string NOT NULL',

				'email' => 'string NOT NULL',

				'password' => 'string NOT NULL',

				'last_login_time' => 'datetime DEFAULT NULL',

				'create_time' => 'datetime DEFAULT NULL',

				'create_user_id' => 'int(11) DEFAULT NULL',

				'update_time' => 'datetime DEFAULT NULL',

				'update_user_id' => 'int(11) DEFAULT NULL',

				), 'ENGINE=InnoDB');

			

			$this->createTable('tbl_project_user_assignment', array(

				'project_id' => 'int(11) NOT NULL',

				'user_id' => 'int(11) NOT NULL',

				'PRIMARY KEY ('project_id', 'user_id')',     ////**line 53**

				), 'ENGINE=InnoDB');


			

			//relationships

			

			$this->addForeignKey("fk_issue_project", "tbl_issue", "project_id", "tbl_project", "id", "CASCADE", "RESTRICT");


			$this->addForeignKey("fk_issue_owner", "tbl_issue". "owner_id", "tbl_user", "id", "CASCADE", "RESTRICT");


			$this->addForeignKey("fk_issue_requester", "tbl_issue", "requester_id", "tbl_user", "id", "CASCADE", "RESTRICT");


			$this->addForeignKey("fk_project_user", "tbl_project_user_assignment", "project_id", "tbl_project", "id", "CASCADE", "RESTRICT");


			$this->addForeignKey("fk_user_project", "tbl_project_user_assignment", "user_id", "tbl_user", "id", "CASCADE", "RESTRICT");


	}


	public function safeDown()

	{

		$this->truncateTable('tbl_project_user_assignment');

		$this->truncateTable('tbl_issue');

		$this->truncateTable('tbl_user');

		$this->dropTable('tbl_project_user_assignment');

		$this->dropTable('tbl_issue');

		$this->dropTable('tbl_issue');

	}

	

}

I can’t seem to understand where i’m going wrong. Anyone here who can catch it?

Many thanks! ;)

Use double quotes instead of single quotes, or escape the single quotes. At the moment, you’re breaking out of your string.

Either:


'PRIMARY KEY ("project_id", "user_id")',

or:


'PRIMARY KEY (\'project_id\', \'user_id\')',

Wuhoo, worked! Keith the champ saves the day again, muchas gracias!(that’s thanks in Spanish)

Cheers!