Nefunkční insert do databáze – relation outbox_id_seq does not exist
- diego191
- Člen | 1
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)