0

zend では、特定のモジュールのマッパーとモデルを作成しました。Zendコントローラーファイルからテーブルにデータを保存しようとしています

データベースとしてpostgresqlを使用しています。自動インクリメント用の主キーを持つテーブルを設定しました

テーブル名と対応する主キーは次のとおりです。

tbl_user_group_business_prmission       --table

pk_bint_user_group_business_prmission_id   --primary key

主キーの生成は次のように行われます

 nextval('tbl_user_group_business_prmission_pk_bint_user_group_business_prmission_id_seq'::regclass)

nextval() 内のパラメーターが count(character) で 60 を超えていることがわかります。これが私が直面している問題です。つまり、このパラメーターのカウント (文字) が 60 を超えているため、このテーブルにデータを挿入できません。

この「主キーが生成されません」のようなエラーが発生します。

この問題は、nextval() 内の文字が 60 を超える場合にのみ発生します。

4

1 に答える 1

1

postgresシステムは63バイト以下の識別子を使用します。長い名前はコマンドで書き込むことができますが、切り捨てられます。このマニュアルSQL-SYNTAX-IDENTIFIERSを確認してください。

CREATE SEQUENCEただし、カスタムを作成するか、phppgadminまたはpgAdminインターフェイスを介して 、シーケンスの名前を更新できます。

table nameこの場合、または短い方を変更するprimary key column nameことをお勧めします。これは、zendでは、tableName + columnName+...を連結してシーケンスを作成するようにハードコーディングされているためです/Zend/Db/Adapter/Pdo/Pgsql.phplastInsertId

編集:
このSO投稿には別の提案があります

于 2013-03-02T09:08:14.043 に答える