Připojení databaze v produkčním modu

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

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
David Matějka
Moderator | 6445
+
0
-

Zkus pouzit extension: https://github.com/…es/Nette-2.2

Scorpio
Člen | 45
+
0
-

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
+
0
-

Ty nekde pouzivas staticky pristup, ze? ten se asi nekamaradi s lazy inicializaci databaze..

David Matějka
Moderator | 6445
+
0
-

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
+
0
-

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
+
0
-

zkus:

services:
	dibi.connection:
		setup: \dibi::setConnection(@self)
		run: true
Scorpio
Člen | 45
+
0
-

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
+
0
-

sorry, takhle:

services:
    dibi.connection:
        setup:
			- \dibi::setConnection(@self)
        run: true
Scorpio
Člen | 45
+
0
-

Super vypadá to že to funguje. Strašně moc děkuji.