Připojení databaze v produkčním modu
- Scorpio
- Člen | 45
Zdravím, z nějakého nepochopitelného důvodu se mi nechce připojit
aplikace k databazi pokud ji přepnu do produkčního modu. Pokud pracuji
v debug modu tak vše funguje.
Chybu jsem nejdříve objevil ve chvíli uploadu na server ale pokud do
bootstrapu přímo vepíšu tak i na localu nejde. (Nette 2.3.1)
$configurator->setDebugMode(false);
Config.neon
parameters:
php:
date.timezone: Europe/Prague
nette:
session:
autoStart: smart
services:
#database: @Nette\Database\Connection
authenticator: Authenticator( )
detector:
class: MobileDetector
arguments: ["@httpRequest"]
router: App\RouterFactory::createRouter
connection: dibi::connect(%database%)
config.local.neon
parameters:
database:
driver: mysql
host: ****
username: ****
password: ****
database: ****
charset: utf8
profiler: true
services:
panel: Dibi\Bridges\Tracy\Panel
tracy.bar:
setup:
- @panel::register(@connection)
Log hlásí:
[2015-04-20 15-50-28] DibiException: Dibi is not connected to database. in \vendor\dibi\dibi\dibi\libs\Dibi.php:129 @ http://adminsystem/sale/orders @@ exception-2015-04-20-15-50-28-e2d6bdad37aa1028a33bcaa23e2e9bd4.html
- Scorpio
- Člen | 45
Bohužel žádná změna chyba stejna, pokud jsem dobře napsal config,
akorat že se mi to takto nepřipoji ani v debug:
config.neon
parameters:
php:
date.timezone: Europe/Prague
nette:
session:
autoStart: smart
services:
#connection: dibi::connect(%database%)
router: App\RouterFactory::createRouter
authenticator: Authenticator( )
detector:
class: MobileDetector
arguments: ["@httpRequest"]
extensions:
dibi: Dibi\Bridges\Nette\DibiExtension22
config.local.neon
dibi:
driver: mysql
host: localhost
username: root
password:
database: adminsystem
charset: utf8
profiler: true
lazy: TRUE
Editoval Scorpio (20. 4. 2015 16:14)
- David Matějka
- Moderator | 6445
Ty nekde pouzivas staticky pristup, ze? ten se asi nekamaradi s lazy inicializaci databaze..
- David Matějka
- Moderator | 6445
Mno vlastne registrace dibi jako sluzby muze obecne zpusobovat problemy se
statickym pristupem. Doporucuji se statickeho pristupu zbavit (tedy injectovat
vsude DibiConnection
). Pripadne budes asi muset nastavit u dibi
sluzby autostart.
- Scorpio
- Člen | 45
Bohužel statické metody se nezbavím momentálně aktualizuji jádro nette z verze 2.0 na 2.3 do teď jsem fungoval na jiném serveru a na novém verze 2.0 způsobovala spoustu chyb. Již jsem vše předělal na 2.3 ale po nahrání na server to začalo dělat tuto chybu. V debugu vše funguje. Lazy klidně vypnu autostart teď nevím jak zapnout. Mám poslední týden abych to na novém serveru zapl a předělání že statické funkce by trvalo asi měsíc. Je to aplikace postupně vylepšováná už asi 3 roky. Sám teď objevuji co jsem to psal za šílenosti.
- David Matějka
- Moderator | 6445
zkus:
services:
dibi.connection:
setup: \dibi::setConnection(@self)
run: true
- Scorpio
- Člen | 45
Zapnu-li ladičku:
Service 'dibi.connection': The item 'setup' in array expects to be list, object Nette\DI\Statement given.
Bez ní stále stejná chyba že není připojen k DB. Přikládám nastavení Composeru ale mam vše v poslední verzi mam za to takže v samotném dibi asi chyba nebude:
{
"name": "nette/adminsystem",
"type": "project",
"require": {
"php": ">= 5.3.1",
"nette/nette": "~2.3.0",
"dibi/dibi": "~2.3.0",
"joseki/pdf-response": "~2.2.0"
},
"require-dev": {
"nette/tester": "~1.0"
},
"minimum-stability": "stable"
}
- David Matějka
- Moderator | 6445
sorry, takhle:
services:
dibi.connection:
setup:
- \dibi::setConnection(@self)
run: true