www-data
je uživatel Debianu, který spouští apache a php. Pokud se pokusíte o dotaz, když nemáte platné připojení, php/mysql se pokusí vytvořit připojení pomocí <unix-user>@localhost
bez hesla. Zde je [email protected] (using password:NO)
pochází z.
Nejpravděpodobnějším důvodem, proč se to začalo dít nyní (ačkoli to před 2 roky fungovalo dobře), je to, že zatížení vaší databáze se zvýšilo do bodu, kdy některá připojení nemohou uspět (pravděpodobně kvůli max_connections nebo max_user_connections; ačkoli to může také vyplývat z jiných omezení, jako je paměť, vlákna atd.). Když k tomu dojde, zavoláte mysql_connect
zobrazí chybovou zprávu a vrátí FALSE
. Pokud se vám nepodaří detekovat toto selhání, pak se vaše další volání mysql (pravděpodobně mysql_query nebo mysql_select_db) pokusí o připojení k [email protected]
-- což způsobuje problém, který vidíte.
Navrhuji povolit hlášení chyb a zobrazení chyb (jak navrhuje @DarkMantis):
ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);
Také se ujistěte, že vaše volání na mysql_connect není před kterým je @
podepsat; a nezapomeňte zkontrolovat návratovou hodnotu. Mělo by to vypadat nějak takto:
$cxn = mysql_connect('localhost','yourusername','yourpassword');
if( $cxn === FALSE ) { die('mysql connection error: '.mysql_error()); }