Php 如何正确使用postressql的条令迁移
我有一个带有postgressql数据库的symfony 2,8项目,ID生成策略是IDENTITY,但我输入的每个命令都像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顺
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']);
}