symfony に Unable to get sequence id. と言われた、そんなとき

以前にもはまったのですが、 今度はsymfonyがシーケンスIDが長すぎると判定して、丸めてしまった結果、うまく動かなくなる、というものでした。

そんなとき。

前にソースを読んだ時になんとなく気になった部分でした。

lib/vendor/propel-generator/classes/propel/engine/database/model/Table.php

のgetSequenceName関数です。

ここを見ると、データベースに応じたgetMaxColumnNameLengthを呼び出して、長さを判定していることがわかります。

potgresqlのシーケンス名の長さは63文字とされています(参照:識別子は最長で63バイトです。つまり英数字で63文字)。

lib/vendor/propel-generator/classes/propel/engine/platform/PgsqlPlatform.php

を見てみると、32になっています。あらあら。

Table.phpでは>で判定しているため、64にしてORマッパーを生成しなおして解決となりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>