Answer the question
In order to leave comments, you need to log in
Yii2 postgres how to implement start migration?
Implemented the Yii2 Advanced setup. Config set to postgresql. next.
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'pgsql:host=localhost;dbname=ххх',
'username' => 'postgres',
'password' => '',
'charset' => 'utf8',
],
<?php
use yii\db\Schema;
use yii\db\Migration;
class m130524_201442_init extends Migration
{
public function up()
{
$tableOptions = null;
if ($this->db->driverName === 'pgsql') {
// http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
}
$this->createTable('{{%user}}', [
'id' => $this->primaryKey(),
'username' => $this->string()->notNull()->unique(),
'auth_key' => $this->string(32)->notNull(),
'password_hash' => $this->string()->notNull(),
'password_reset_token' => $this->string()->unique(),
'email' => $this->string()->notNull()->unique(),
'status' => $this->smallInteger()->notNull()->defaultValue(10),
'created_at' => $this->integer()->notNull(),
'updated_at' => $this->integer()->notNull(),
], $tableOptions);
}
public function down()
{
$this->dropTable('{{%user}}');
}
}
CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB
Answer the question
In order to leave comments, you need to log in
An exception is thrown because PostgreSQL != MySQL, your PostgreSQL query must not have this string.
SQL command 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB' is relevant only for MySQL.
Posqtresql knows nothing about InnoDB, MyISAM, etc. engines.
Comment out the if block with this command and everything should work out
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question