Primary key not found, Primary key not found

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

Ahoj,

narazil jsem na jednu divnou chybu.

Chci ulozit data do db pomoci metody Nette\Database\Table\ActiveRow::update a co nevidim "Cannot read an undeclared column "id"" coz mi prijde velmi zvlastni.

V Db jsou vsechny PK spravne oznacene, vymazal jsem adresar „temp“ – nepomohlo.

Nevite nahodou nekdo, co muze byt pricinou teto chyby?

David Matějka
Moderator | 6445
+
0
-

verze nette?

koudis
Člen | 33
+
0
-

verze nette?

2.0.6

koudis
Člen | 33
+
0
-

Mimochodem, zadny z primarnich klicu se nejmenuje „id“…

David Matějka
Moderator | 6445
+
0
-

aktualizuj na novejsi stable verzi

jakou pouzivas reflection? discovered nebo conventional?

koudis
Člen | 33
+
0
-

jakou pouzivas reflection? discovered nebo conventional?

Hmm, ani nevim. Nic jsem nikde v tomto smyslu nenastavoval.

Kde to lze zjistit?

David Matějka
Moderator | 6445
+
0
-

v configu, https://doc.nette.org/cs/configuring#… pokud nemas nastaveno reflection, tak se pouziva discovered (ted si teda nejsem jistej, jestli i v starsi verzi jako 2.0.6, ale asi jo)…

Milo
Nette Core | 1283
+
0
-

Defaultní je ConventionalReflection což znamená, že musíš při tvorbě databáze používat danou konvenci. Ohledně sloupců s primárním klíčem je dohoda taková, že se sloupce s primárním klíčem jmenují id.

Můžeš použít DiscoveredReflection. Ta si databázi osahá a zjistí si sama, jak se sloupce s primárním klíčem jmenují. $connection->setDatabseReflection(new DiscoveredReflection(...))

Viz API k Nette 2.0.6

Pokud ale můžeš, upgradni na 2.0.12. V NDB bylo hodně fixů a změn.

koudis
Člen | 33
+
0
-

Dekuji vsem za pomoc a odpovedi :)…

David Matějka
Moderator | 6445
+
0
-

@Milo: conventional reflection je defaultni pouze v pripade primeho instancovani Connection, pri klasicke konfiguraci pres neon je defaultni discovered