Problém s připojením na databázi,config.neon

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

AHoj.Už to tady bylo mockrát, ale jsem v nette začátečník. Zkusil jsem promazat cache, ale to nepomáhá. Pořád mi při použití databáze vyskakuje :
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket ‚/tmp/mysql.sock‘ (2)

Prosím o pomoc. Na localu to jede, ale se serverem je problém. Uvítám každou radu.
config.neon mám takovýto (inicializační údaje jsou smyšlené pro sychr):

common:
	php: # PHP configuration
		date.timezone: Europe/Prague
		# session.save_path: "%tempDir%/sessions"
		# zlib.output_compression: yes


	database:
		driver: mysql
		host: localhost
		unix_socket: /var/run/mysql/mysql.sock
		username: user
		password: password
		database: NameOfDatabase
		charset: utf8
		profiler: true

	services:

		database:
			class: Nette\Database\Connection
			arguments: ['mysql:host=localhost;unix_socket=/var/run/mysql/mysql.sock;dbname=NameOfDatabase', 'user', 'password']
		model:
			class: Model
			arguments: [@database]

		authenticator:
			factory: [@model, createAuthenticatorService]

production < common:

development < common:

console < common:

Editoval Barrin (1. 12. 2012 1:50)

ritchi
Člen | 3
+
0
-

„Na localu to jede, ale se serverem je problém“
Pochopil som dobre, že sa chceš na serveri pripojiť na databázu ktorú máš lokálne?

Nox
Člen | 378
+
0
-

@ritchi myslim že ne, psal, že problém je na serveru

@Barrin zkontroluj, jestli máš správně údaje k připojení (někde třeba chtějí localhost místo 127.0.0.1, i když by to mělo být teoreticky to stejné), jestli je to server/vps zkus (re)start mysqld, něco jako http://stackoverflow.com/…40849/387503

Barrin
Člen | 5
+
0
-

@ritchi

Jj problém je na serveru. Na localhostu takový to config funguje. A chci se připojit na databázi, která je na tom serveru.

@Nox

Změna nepomohla a na restart nemám bohužel práva.

EDIT: Navíc mě to dohnalo k tomu, abych vše promazal a nahrál znovu. Mmtálně už to ani nic neukládá do cash ani do log. Vrací to stále chybu 500 ( což je nějaká chyba, asi zas v configu, ale já bohužel teď nevím jaká, když se to neukládá ).

Editoval Barrin (2. 12. 2012 12:23)

jiri.pudil
Nette Blogger | 1032
+
0
-

Mmtálně už to ani nic neukládá do cash ani do log

Zkontroluj oprávnění k příslušným složkám.

Barrin
Člen | 5
+
0
-

Ok už to zase jede a změnil jsem config. A mám tu zase tohle.

PHP Fatal error: Uncaught exception InvalidArgumentException with message ‚Configuration must be array, string or ArrayObject.‘ in /*cesta/DibiConnection.php:68

Poraďte někdo prosím. Už zkusil snad všecko. Děkuju.

config.neon

#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
#
# If you don't protect this directory from direct web access, anybody will be able to see your passwords.
# https://nette.org/en/security-warning
#
common:
	php: # PHP configuration
		date.timezone: Europe/Prague
		# session.save_path: "%tempDir%/sessions"
		# zlib.output_compression: yes


	parameters:
		database:
			driver: mysql
			host: localhost
			dbname: -------
			user: --------
			password: -------
			socket: /var/run/mysql/mysql.sock

	services:
		database:
			class: Nette\Database\Connection('%database.driver%:host=%database.host%;socket=%database.socket%;dbname=%database.dbname%',%database.user%, %database.password%, null,Nette\Database\Reflection\DiscoveredReflection())


		model:
			class: Model
			arguments: [@database]

		authenticator:
			factory: [@model, createAuthenticatorService]

production < common:

development < common:

console < common:

bootstrap.php

<?php

/**
 * My Application bootstrap file.
 */

use Nette\DI,
	Nette\Database,
	Nette\Diagnostics\Debugger,
	Nette\Application\Routers\Route,
	Nette\Application\Routers\RouteList,
	Nette\Application\Routers\SimpleRouter;


// Load Nette Framework
$params['libsDir'] = __DIR__ . '/../libs';
require $params['libsDir'] . '/Nette/loader.php';


// Enable Nette Debugger for error visualisation & logging
Debugger::$logDirectory = __DIR__ . '/../log';
Debugger::$strictMode = TRUE;
Debugger::enable();


// Load configuration from config.neon file
$configurator = new Nette\Configurator;
$configurator->container->params += $params;
$configurator->container->params['tempDir'] = __DIR__ . '/../temp';
$configurator->container->getService('robotLoader'); // forces RobotLoader to be registered
$container = $configurator->loadConfig(__DIR__ . '/config.neon');

dibi::connect($container->params['database']);

// Setup router
$router = $container->router;
$router[] = new Route('index.php/vyrobky', 'Vyrobky:default');
*// dalsi routy
*
*
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');


// Configure and run the application!
$application = $container->application;
//$application->catchExceptions = TRUE;
$application->errorPresenter = 'Error';
$application->run();
enumag
Člen | 2118
+
0
-

Kde se tam bere DibiConnection, když v configu máš Nette\Database\Connection?!

Barrin
Člen | 5
+
0
-

Aha to je kravina. Ale stejně to chci zapojit přes dibi::connect. Jen v tom případě to potřebuju přepsat nějak, abych jen dostal parametry databáze z config.neon.

Šaman
Člen | 2666
+
0
-

Tu DibiConnection chybu s arrayem mi kdysi vyřešilo aktuální Dibi. Nemáš nějakou prehistorickou verzi?

Barrin
Člen | 5
+
0
-

Už jsem aktualizoval dibi a nepomohlo to. Vrátil jsem se k té původní verzi configu co je úplně nahoře. Nette na kterém to jede,je rok staré zhruba. Už přemýšlím jestli nepomůže jeho aktualizace, ale podobný zápisy fungovali i ve starších verzích.

Jinak opět chyba:
Can't connect to local MySQL server through socket ‚/tmp/mysql.sock‘ (2)

Vychází to z:
dibi::connect($container->params[‚database‘]);

Pokud řádek zakomentuji, tak samozřejmě mi naběhne aspoň hlavní strana.

Už jsem i procházel parametry pro dibi, ty jsou nastavené. Restart nepůjde, nepracuji na soukromém serveru, ale na školním. Nemám přidělené práva. Už je to fakt zoufalost.

Vyřešeno :
Změněna verze Nette na nejnovější. Dibi přepsáno do config.neon a parametr unix_socket změněn jen na socket a běží to.

	parameters:
		database:
			driver: mysql
			host: localhost
			username: -----
			password: -----
			database: -----
			socket: /var/run/mysql/mysql.sock
			lazy: TRUE

Editoval Barrin (5. 12. 2012 11:57)