Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确使用postressql的条令迁移_Php_Postgresql_Doctrine_Symfony 2.8 - Fatal编程技术网

Php 如何正确使用postressql的条令迁移

Php 如何正确使用postressql的条令迁移,php,postgresql,doctrine,symfony-2.8,Php,Postgresql,Doctrine,Symfony 2.8,我有一个带有postgressql数据库的symfony 2,8项目,ID生成策略是IDENTITY,但我输入的每个命令都像 doctrine:schema:update 或 返回如下错误: An exception occurred while executing 'SELECT min_value, increment_by FROM "abstract_group_id_seq"': SQLSTATE[42703]:未定义的列:7错误:列“最小值”不存在 第1行:从“抽象组id顺

我有一个带有postgressql数据库的symfony 2,8项目,ID生成策略是IDENTITY,但我输入的每个命令都像

doctrine:schema:update

返回如下错误:

 An exception occurred while executing 'SELECT min_value, increment_by FROM "abstract_group_id_seq"':  
SQLSTATE[42703]:未定义的列:7错误:列“最小值”不存在
第1行:从“抽象组id顺序”中选择最小值、增量

这是架构名称问题吗?有人知道如何正确设置条令吗?谢谢你

^

更改方法\u getPortableSequenceDefinition()位于文件/vendor/doctrine/dbal/lib/doctrine/dbal/Schema/PostgreSqlSchemaManager.php中

对于这一点:

 protected function _getPortableSequenceDefinition($sequence)
    {
        if ($sequence['schemaname'] != 'public') {
            $sequenceName = $sequence['schemaname'] . "." . $sequence['relname'];
        } else {
            $sequenceName = $sequence['relname'];
        }

        $version = floatval($this->_conn->getWrappedConnection()->getServerVersion());

        if ($version >= 10) {$data = $this->_conn->fetchAll('SELECT min_value, increment_by FROM pg_sequences WHERE schemaname = \'public\' AND sequencename = '.$this->_conn->quote($sequenceName));
        }
        else
        {
            $data = $this->_conn->fetchAll('SELECT min_value, increment_by FROM ' . $this->_platform->quoteIdentifier($sequenceName));
        }

        return new Sequence($sequenceName, $data[0]['increment_by'], $data[0]['min_value']);
    }

如果其他人仍然存在此问题,请确保您在doctor.yaml中使用了正确的Postgres驱动程序版本


这是一个非常好的问题!你使用的是什么版本的Postgres?教义与PG10有一些问题,请参见是的,postgres版本是PG10谢谢您提供的有用提示。节省了我很多时间。
 protected function _getPortableSequenceDefinition($sequence)
    {
        if ($sequence['schemaname'] != 'public') {
            $sequenceName = $sequence['schemaname'] . "." . $sequence['relname'];
        } else {
            $sequenceName = $sequence['relname'];
        }

        $version = floatval($this->_conn->getWrappedConnection()->getServerVersion());

        if ($version >= 10) {$data = $this->_conn->fetchAll('SELECT min_value, increment_by FROM pg_sequences WHERE schemaname = \'public\' AND sequencename = '.$this->_conn->quote($sequenceName));
        }
        else
        {
            $data = $this->_conn->fetchAll('SELECT min_value, increment_by FROM ' . $this->_platform->quoteIdentifier($sequenceName));
        }

        return new Sequence($sequenceName, $data[0]['increment_by'], $data[0]['min_value']);
    }