Tvoříme první aplikaci → Table ‚posts‘ does not exist
- andrewthesloth
- Člen | 3
Zdravím,
rozhodl jsem se, že se začnu učit v Nette. Jelikož je to mé první setkání s PHP frameworkem, řekl jsem si, že nezačnu nikde jinde než u návodu právě od Nette, konkrétně „Píšeme první aplikaci“. Že budu mít problém, se kterým si sám neporadím, hned na počátku, to jsem nečekal. Proto se sem obracím s žádostí o pomoc.
V kapitole „Úvodní stránka“ jsem jel přesně podle návodu, dokonce jsem i proměnné pojmenovával stejně, ale narazil na problém. Abych krátce shrnul, o čem v kapitole jde, účelem je vytvořit MySQL databázi, kterou následně načítat a zobrazovat v latte šabloně.
Konečně k problému. Vytvořil jsem databázi „quickstart“; následně
jsem do db vložil table „posts“ a naplnil několika záznamy. Když pak ale
chci table načíst, vyhodí mi Nette při načítání stránky chybu
"Nette\InvalidArgumentException Table 'posts' does not exist."
.
Napadá mě, že se špatně připojuji (autentizuji) k databázi. Jejím
přihlašovacím jménem je root
a heslo není, což úplně
přesně nevím, jak předat neonu. Zkoušel jsem jak password: ''
,
tak i password:
.
Budu moc vděčný za jakoukoliv pomoc, snažil jsem se to vygooglit, jak jen jsem dokázal – neúspěšně. Přikládám kód.
classa v HomepagePresenter.php
class HomepagePresenter extends Nette\Application\UI\Presenter
{
private $database;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
public function renderDefault()
{
$this->template->posts = $this->database->table('posts') <=== řádek se zvýrazněnou chybou
->order('created_at DESC')
->limit(5);
}
}
přidaná část „database“ v config.neon
database:
dsn: 'mysql:host=127.0.0.1;dbname=quickstart'
user: root
password:
- David Matějka
- Moderator | 6445
ahoj, zkus smazat cache ze slozky /temp
ale dit by se to nemelo a cache by se mela mazat sama. jsi v debug modu?
nezapomnel si v bootstrapu ten radek setDebugMode(false)
?
respektive vidis dole panel s tracy?
- andrewthesloth
- Člen | 3
David Matějka napsal(a):
ahoj, zkus smazat cache ze slozky /temp
ale dit by se to nemelo a cache by se mela mazat sama. jsi v debug modu? nezapomnel si v bootstrapu ten radek
setDebugMode(false)
? respektive vidis dole panel s tracy?
Smazání cache nepomohlo a v debug modu jsem, tracy vidím.
rkor napsal(a):
Myslím, že v configu chybu nemáš, páč to bys dostal jinou chybu – např: SQLSTATE[HY000] [1045] Access denied for user ‚root‘@'127.0.0.1' (using password: NO)
Tak mrkni na to, co psal @DavidMatějka, případně zkus zkontrolovat, zda nemáš někde překlep
Aha, super. Tak alespoň to jsem vyloučil. Překlep hledám celý den, pokud tam je, tak jsem slepej.
Začínám být bezradný :(. Ale děkuji za odpovědi.
- rkor
- Člen | 62
Ještě mne napadlo. Pokud jsi stáhl zip nebo instaloval přes composer, tak v souboru config.local.neon je
database:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user:
password:
a to má přednost před tím, co je zadáno v config.neon. Tím pádem by se používala DB „test“ a tam tabulka posts asi nebude. Případně někam nahraj projekt nebo napiš mail a můžeme na to mrknout.
- andrewthesloth
- Člen | 3
rkor napsal(a):
Ještě mne napadlo. Pokud jsi stáhl zip nebo instaloval přes composer, tak v souboru config.local.neon je
database: dsn: 'mysql:host=127.0.0.1;dbname=test' user: password:
a to má přednost před tím, co je zadáno v config.neon. Tím pádem by se používala DB „test“ a tam tabulka posts asi nebude. Případně někam nahraj projekt nebo napiš mail a můžeme na to mrknout.
Nejseš ty frajer? Funguje to, mockrát díky. Nevím, proč mě nenapadlo do toho souboru vůbec nakouknout, třeba ze zvědavosti… Ještě se to tak hezky nabízí… Tak už jenom doufat, že se poučím a budu si hlídat nastavení pro různé přístupy.
Ještě jednou díky – jak tobě, tak Davidovi. Super.
- rkor
- Člen | 62
Abych to upřesnil, tak v souboru bootstrap.php je
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');
a proto se upřednostní konfigurace z config.local.neon, pokud přepíše některé parametry z config.neon.
V dokumentaci je to popsáno:
Veškerá konfigurace včetně konfigurace databáze je uložena v adresáři /app/config/ v souborech config.neon a config.local.neon. Soubor config.neon obsahuje globální nastavení aplikace a config.local.neon pouze ty parametry, které jsou specifické pro aktuální prostředí (rozdíl mezi vývojovým a produkčním serverem apod.).
Editoval rkor (11. 11. 2017 21:07)