Problém s připojením na databázi,config.neon
- Barrin
- Člen | 5
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)
- Nox
- Člen | 378
@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
@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
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
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();
- Barrin
- Člen | 5
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)