www-data
is de Debian-gebruiker die apache en php uitvoert. Als je een query probeert uit te voeren terwijl je geen geldige verbinding hebt, zal php/mysql proberen een verbinding tot stand te brengen met behulp van <unix-user>@localhost
zonder wachtwoord. Dit is waar [email protected] (using password:NO)
komt vandaan.
De meest waarschijnlijke reden dat dit nu is begonnen (hoewel het al 2 jaar goed werkte) is dat je db-belasting is toegenomen tot het punt waarop sommige verbindingen niet kunnen slagen (waarschijnlijk vanwege max_connections of max_user_connections; hoewel dit kan ook het gevolg zijn van andere limieten zoals geheugen, threads, enz.). Wanneer dit gebeurt, wordt uw oproep naar mysql_connect
geeft een foutmelding en retourneert FALSE
. Als u deze fout niet kunt detecteren, zal uw volgende mysql-aanroep (waarschijnlijk mysql_query of mysql_select_db) proberen verbinding te maken met [email protected]
-- waardoor het probleem wordt veroorzaakt dat u ziet.
Ik raad aan om foutrapportage en foutweergave in te schakelen (zoals voorgesteld door @DarkMantis):
ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);
Zorg er ook voor dat uw aanroep naar mysql_connect niet . is voorafgegaan door een @
teken; en zorg ervoor dat u de retourwaarde controleert. Het zou er ongeveer zo uit moeten zien:
$cxn = mysql_connect('localhost','yourusername','yourpassword');
if( $cxn === FALSE ) { die('mysql connection error: '.mysql_error()); }