Задать вопрос

Yii2 postgres как реализовать стартовую миграцию?

Осуществил настройку Yii2 Advanced. Конфиг настроил на postgresql. следующий.
'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}}');
    }
}


использую в консоли команду Yii migrate, после чего находит не добавленную миграцию и предлагает добавить, на что я соглашаюсь. Но в итоге консоль ругается на ошибку синтаксиса в этом массиве
CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB


Кто сталкивался, как решили? Проблема не в конфиге коннекта. в базе таблица Migrate создал. Юзеров реализовать не может.
  • Вопрос задан
  • 4102 просмотра
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
Demetriy
@Demetriy
веб и мобильная разработка
Исключение кидается, т.к. PostgreSQL != MySQL, ваш запрос к PostgreSQL не должен иметь такой строки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@filatoff
SQL-команда 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB' актуальна только для MySQL.
Posqtresql ничего не знает о движках InnoDB, MyISAM и т.д.
Закомментируйте блок if с этой командой и все должно получиться
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы