www-data
jest użytkownikiem Debiana, który uruchamia Apache i php. Jeśli spróbujesz wykonać zapytanie, gdy nie masz prawidłowego połączenia, php/mysql spróbuje utworzyć połączenie przy użyciu <unix-user>@localhost
bez hasła. Tutaj [email protected] (using password:NO)
pochodzi z.
Najbardziej prawdopodobnym powodem, dla którego zaczęło się to teraz (choć działało to dobrze przez 2 lata wcześniej), jest to, że obciążenie bazy danych wzrosło do punktu, w którym niektóre połączenia nie mogą się powieść (prawdopodobnie z powodu max_connections lub max_user_connections; chociaż może to również wynikać z innych ograniczeń, takich jak pamięć, wątki itp.). Kiedy tak się stanie, twoje wezwanie do mysql_connect
wyemituje komunikat o błędzie i zwróci FALSE
. Jeśli nie uda Ci się wykryć tego błędu, następne wywołanie mysql (prawdopodobnie mysql_query lub mysql_select_db) podejmie próbę połączenia z przykł[email protected]
-- powodując w ten sposób problem, który widzisz.
Proponuję włączyć raportowanie błędów i wyświetlanie błędów (zgodnie z sugestią @DarkMantis):
ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);
Upewnij się również, że połączenie z mysql_connect nie poprzedzone @
znak; i upewnij się, że sprawdziłeś wartość zwrotu. Powinno to wyglądać mniej więcej tak:
$cxn = mysql_connect('localhost','yourusername','yourpassword');
if( $cxn === FALSE ) { die('mysql connection error: '.mysql_error()); }