Propel 2 中的 table "status" 列“”声明了两次
Column "" declared twice in table "status" in Propel 2
我正在尝试使用 Propel 2 从 MSSQL 数据库反向生成模式。我已经像往常一样设置了我的 YAML 配置文件:
dbname:
adapter: mssql
classname: Propel\Runtime\Connection\ConnectionWrapper
dsn: "dblib:host=123.456.789.012;dbname=dbname"
user: username
password: password
attributes:
当我 运行 命令 propel reverse 'dbname'
我收到错误:
[Propel\Generator\Exception\EngineException]
Column "" declared twice in table "Status"
这显然是扔在这里:
https://github.com/propelorm/Propel2/blob/master/src/Propel/Generator/Model/Table.php#L499
@r499
为什么 Propel 会尝试添加 'empty' 列?当我查看数据库 table Status
的设计时,我的 SQL 服务器管理工作室根本不显示空列,它只显示它包含的两个列(uid
和 name
)。
编辑:
于是我去深挖Propel的代码,好像这里出错了:
https://github.com/propelorm/Propel2/blob/62859fd0ed3520b7d7afbbdeac113edaf160982b/src/Propel/Generator/Reverse/MssqlSchemaParser.php#L124
protected function addColumns(Table $table)
{
$dataFetcher = $this->dbh->query("sp_columns '" . $table->getName() . "'");
foreach ($dataFetcher as $row) {
$name = $this->cleanDelimitedIdentifiers($row['COLUMN_NAME']);
$table->getName()
正确returns正确table名字。当我打印 dataFetcher 时,它是一个 PDO 对象。然而:
$row
给出以下数组:
Array(
[0] => My DBname
[1] => My DBprefix
[2] => Status
[3] => uid
[4] => 4
[5] => int identity
etc. no string indices hence COLUMN_NAME is empty.
(代表OP发帖):
这是 Propel MSSQL 模式解析器中的错误:https://github.com/propelorm/Propel2/issues/863。
我正在尝试使用 Propel 2 从 MSSQL 数据库反向生成模式。我已经像往常一样设置了我的 YAML 配置文件:
dbname:
adapter: mssql
classname: Propel\Runtime\Connection\ConnectionWrapper
dsn: "dblib:host=123.456.789.012;dbname=dbname"
user: username
password: password
attributes:
当我 运行 命令 propel reverse 'dbname'
我收到错误:
[Propel\Generator\Exception\EngineException]
Column "" declared twice in table "Status"
这显然是扔在这里: https://github.com/propelorm/Propel2/blob/master/src/Propel/Generator/Model/Table.php#L499 @r499
为什么 Propel 会尝试添加 'empty' 列?当我查看数据库 table Status
的设计时,我的 SQL 服务器管理工作室根本不显示空列,它只显示它包含的两个列(uid
和 name
)。
编辑: 于是我去深挖Propel的代码,好像这里出错了: https://github.com/propelorm/Propel2/blob/62859fd0ed3520b7d7afbbdeac113edaf160982b/src/Propel/Generator/Reverse/MssqlSchemaParser.php#L124
protected function addColumns(Table $table)
{
$dataFetcher = $this->dbh->query("sp_columns '" . $table->getName() . "'");
foreach ($dataFetcher as $row) {
$name = $this->cleanDelimitedIdentifiers($row['COLUMN_NAME']);
$table->getName()
正确returns正确table名字。当我打印 dataFetcher 时,它是一个 PDO 对象。然而:
$row
给出以下数组:
Array(
[0] => My DBname
[1] => My DBprefix
[2] => Status
[3] => uid
[4] => 4
[5] => int identity
etc. no string indices hence COLUMN_NAME is empty.
(代表OP发帖):
这是 Propel MSSQL 模式解析器中的错误:https://github.com/propelorm/Propel2/issues/863。