lastInsertId ve Zend Framework ile postgresql dizisi sorunlar

3 Cevap php

Ben sadece bir proje üzerinde çalışıyorum ve ben Zend_Db komutu yerleştirin kullanırken ben son eklenen kimliği almak için çalışıyorum, ancak ben bir sorun yaşıyorum isabet zend çerçeve ve Postgresql'i (normalde MySQL kullanabilirsiniz) kullanıyorum başladı.

Fonksiyonunu kullanırken $db->lastinsertid('users', 'userid'); Ben şu hata mesajı alıyorum:

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "users_userid_seq" does not exist LINE 1: SELECT CURRVAL('users_userid_seq') ^

Ben veritabanı kontrol ettik ve sırası var yok, ve masa ve sırası hem de uygulamaya erişmek için kullanılması ediliyor aynı kullanıcı tarafından aittir.

Ben bile $db->lastSequenceId('users_userid_seq'); ama yine aynı hata mesajı alıyorum denedim.

Ben sorun postgresql (ben büyük olasılıkla düşünüyorum) veya çerçeve ile olup olmadığından emin değilim.

Başkasının bu benzer bir sorunu oldu?

3 Cevap

Ben bunu sadece bir yazım hatası oldu, cevabını bulmuşsun.

FWIW, seni gördüm hata için bir başka nedeni olarak şu öneride sunarız:

Sen dizisi adı küçük durumda başka bir şey olarak depolanır ise eşleştirme durumunda dahil depolandığı tam olarak dizisi, adını büyü gerekir.

Bir başka deyişle, sırası yazım "Users_userid_seq," ile oluşturulan ancak "users_userid_seq," Bunun eşleşmiyor ve hata alırsınız gibi sorgulandığında edin.

psql aracında dizileri listesi deneyin:

postgres=# \ds

Onlar veritabanında saklanır gibi bu onların yazım ile tanımlanan dizileri, gösterecektir.

Masa "kullanıcıları" şema Zend_Db oturumun "search_path" olup olmadığını kontrol edin.

Aşağıdaki kod bana (PostgreSQL ve ZF) için çalışır:

$db->insert($this->getTableName(), $data);

$id = $db->lastSequenceId($this->_sequence);

Eğer veritabanında kullandığınız dizisi ile $this->_sequence olarak değiştirin.