Nette\DI\ServiceCreationException – špatné připojení k DB?

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

Snažím se rozjet jeden svůj projekt na gigaserveru. Na localhostu mi to fungovalo.

Laděnka mi hlásí toto:
Nette\DI\ServiceCreationException
Service ‚filesRepository‘: No service of type Nette\Database\Connection found.
Todo\Repository::__construct() is written correctly and service of this type is registered.

Chyba je pravděpodobně v připojení k DB??
Nevíte někdo jak to správně nastavit pro gigaserver?

#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
# https://nette.org/en/security-warning
#
common:
	parameters:
		database:
			host: 'localhost'
			username: '31710_'
			password: 'xxx'
			database: 'martinhroch_cz_'
			profiler: TRUE
			lazy: TRUE

	php:
		date.timezone: Europe/Prague
		# zlib.output_compression: yes

	nette:
		application:
			errorPresenter: Error
		session:
			autoStart: smart
			expiration: +40 days

	services:
		#database:
		#	class: DibiConnection(%database%)
		#sampleModel:
		#	class: Model\SampleModel(@database)

		userRepository: Todo\UserRepository
		pagesRepository: Todo\PagesRepository

		folderRepository: Todo\folderRepository
		filesRepository: Todo\filesRepository



production < common:

development < common:
	nette:
		database:
			dsn: 'mysql:host=localhost;dbname=martinhroch_cz_'
			user: '31710_'
			password: 'xxx'
Pavel Janda
Člen | 977
+
0
-

Chybí ti nastavení databáze v sekci „production“. Na localu ti to Database našlo, protože to v dané sekci máš.

production < common:
    nette:
        database:
            dsn: 'mysql:host=localhost;dbname=martinhroch_cz_'
            user: '31710_'
            password: 'xxx'

development < common:
    nette:
        database:
            dsn: 'mysql:host=localhost;dbname=martinhroch_cz_'
            user: '31710_'
            password: 'xxx'

Editoval Beton (23. 2. 2015 12:24)

Zerig
Člen | 70
+
0
-

Bohužel žádná změna

Pavel Janda
Člen | 977
+
0
-

Máš tam:

1, nastavené připojení k databázi, pokud jsi v prostředí „develop“, ale nezávisle na parametrech, které ukládáš nahoře
2, nastavené nějaké parametry, mimo jiné i databázi; Pozor! Odtud Nette nic nebere, musel bys napsat toto:

production < common:
    nette:
        database:
            dsn: 'mysql:host=%database.host%;dbname=%database.database%'
			user: %database.user%
			password: %database.password%
Pavel Janda
Člen | 977
+
0
-

Zerig napsal(a):

Bohužel žádná změna

Smazal jsi cache?

Zerig
Člen | 70
+
0
-

obsah složky temp/cache vždy mažu

Pavel Janda
Člen | 977
+
0
-

A jak en config načítáš v bootstrapu? Musíš mu nějak říci, aby hledal i sekci „production“.

Pokud máš všude stejné připojení, tak ho dej do common:

common:
    parameters:
        database:
            host: 'localhost'
            username: '31710_'
            password: 'xxx'
            database: 'martinhroch_cz_'
            profiler: TRUE
            lazy: TRUE

    php:
        date.timezone: Europe/Prague
        # zlib.output_compression: yes

    nette:
        application:
            errorPresenter: Error
        session:
            autoStart: smart
            expiration: +40 days
		database:
            dsn: 'mysql:host=%database.host%;dbname=%database.database%'
            user: %database.user%
            password: %database.password%
Pavel Janda
Člen | 977
+
0
-

Viz Docu

Zerig
Člen | 70
+
0
-

Takhle jsem to upravil a myslím, že mě to k DB pustilo. Protože to hlásí jinou chybu: Trying to get property of non-object

common:
	parameters:

	php:
		date.timezone: Europe/Prague
		# zlib.output_compression: yes

	nette:
		application:
			errorPresenter: Error
		session:
			autoStart: smart
			expiration: +40 days

	services:
		#database:
		#	class: DibiConnection(%database%)
		#sampleModel:
		#	class: Model\SampleModel(@database)

		userRepository: Todo\UserRepository
		pagesRepository: Todo\PagesRepository

		folderRepository: Todo\folderRepository
		filesRepository: Todo\filesRepository


production < common:
	nette:
		database:
			dsn: 'mysql:host=localhost;dbname=martinhroch_cz_'
			user: '31710_'
			password: 'xxx'

Takže problém s DB vyřešen.
Děkuju