Nefunkční insert do databáze – relation outbox_id_seq does not exist

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
diego191
Člen | 1
+
0
-

Snažím se dle quickstartu dát dohromady stránku s formulářem pro insert do PostgreSQL databáze. Insert se provede, nicméně laděnka brečí SQLSTATE[42P01]: Undefined table: 7 ERROR: relation „outbox_id_seq“ does not exist

Úryvek kódu

use Nette;
class OutboxRepository extends Repository
{
    public function sendSms($recipient, $text)
    {
    return $this->getTable()->insert(array(
                'TextDecoded' => $text,
                'DestinationNumber' => $recipient,
                'CreatorID' => 'tester'
    ));
    }
}

$data

array(3) ▼ {
   TextDecoded => "snek" (4)
   DestinationNumber => "999242662" (9)
   CreatorID => "tester" (6)
}

Chyba ukazuje sem:
File …/libs/Nette/Database/Table/Selection.php: Line 669

...
if (!is_array($this->primary) && !isset($data[$this->primary]) && ($id = $this->connection->lastInsertId($this->getPrimarySequence()))) {
...

Tabulka outbox má také sloupec ID, které je přiřazováno automaticky, existuje tedy relace outbox_ID_seq, která tento index generuje. Proč tedy laděnka brečí, že neexistuje outbox_id_seq?

Pokud si zkusím rovnou na databázi insert ve stylu: insert into outbox („DestinationNumber“,„TextDecoded“,„CreatorID“) values ‚999242662‘,‚snek‘,‚tester‘);, proběhne bez chyby.

Řekl bych, že problém je ukryt někde za funkcí Nette getPrimarySequence(), která asi nějakým způsobem hlídá indexy i když mi není úplně jasné proč…

Pochopil jsem, že problém obejdu tak, že přejmenuju sekvenci ALTER SEQUENCE „outbox_ID_seq“ rename to „outbox_id_seq“;, ale toto řešení se mi nelíbí, protože s databází pracuje ještě jiná aplikace (Gammu) a té se to nemusí v budoucnu líbit.

Co s tím? Lze to řešit? Proč mi někdo nutí, abych se při pojmenovávání sloupců, resp. tabulek/sekvencí v databázi, omezil na malá písmena?

PHP 5.4.4
Nette 2.0.10

Editoval diego191 (10. 7. 2013 23:57)