Panne de mon dolibarr

Bonjour à tous,
Mon ordinateur lors de l’utilisation de Dolibarr a fait un bel écran bleu et Dolibarr s’est crashé. Un seul programmé ne fonctionne plus sur l’ordinateur, c’est dolibarr.
Je vous mets le message affiché Warning: mysqli::__construct(): (HY000/2002): Aucune connexion n�a pu �tre �tablie car l�ordinateur cible l�a express�ment refus�e. in C:\dolibarrter\www\dolibarr\htdocs\core\db\mysqli.class.php on line 216
DolibarrHasDetectedError.
InformationToHelpDiagnose:
Date: 20220514084734
Dolibarr: 14.0.2 - https://www.dolibarr.org
PHP: 7.3.12
Server: Apache/2.4.41 (Win64) PHP/7.3.12
OS: Windows NT SUPERPCCONTILLY 10.0 build 19044 (Windows 10) AMD64
UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0

RequestedUrl: /dolibarr/
Referer:
MenuManager:

DatabaseTypeManager: mysqli
RequestLastAccessInError: ErrorNoRequestInError
ReturnCodeLastAccessInError: ErrorNoRequestInError
InformationLastAccessInError: ErrorNoRequestInError

Message:
Si quelqu’un peut me dire comment faire pour rétablir sans utiliser une sauvegarde. Cela m’intéresse. Merci

Bonjour,

Comment est installé Dolibarr sur le PC ? Doliwamp ?
Avez-vous vérifié si mysql est démarré ? Et apache ?

Bonjour,
J’ai mis du temps à répondre car j’étais en déplacement pour mon association. La Database ne démarre pas. Que puis je faire. l’installation a été faite par doliwamp je suis en version 14.02.
Si vous avez une solution pour réparer dites moi.
Merci
Dominique

  • Copyright (C) 2002-2005 Rodolphe Quiedeville * Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2006 Andre Cianfarani * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2015 Raphaël Doursenaud * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . / /* * \file htdocs/core/db/mysqli.class.php * \brief Class file to manage Dolibarr database access for a MySQL database / require_once DOL_DOCUMENT_ROOT.’/core/db/DoliDB.class.php’; /* * Class to manage Dolibarr database access for a MySQL database using the MySQLi extension / class DoliDBMysqli extends DoliDB { /* @var mysqli Database object / public $db; //! Database type public $type = ‹ mysqli ›; //! Database label const LABEL = ‹ MySQL or MariaDB ›; //! Version min database const VERSIONMIN = ‹ 5.0.3 ›; /* @var bool|mysqli_result Resultset of last query / private $_results; /* * Constructor. * This create an opened connexion to a database server and eventually to a database * * @param string $type Type of database (mysql, pgsql…) * @param string $host Address of database server * @param string $user Nom de l’utilisateur autorise * @param string $pass Mot de passe * @param string $name Nom de la database * @param int $port Port of database server / public function __construct($type, $host, $user, $pass, $name = ‹  ›, $port = 0) { global $conf, $langs; // Note that having « static » property for « $forcecharset » and « $forcecollate » will make error here in strict mode, so they are not static if (!empty($conf->db->character_set)) { $this->forcecharset = $conf->db->character_set; } if (!empty($conf->db->dolibarr_main_db_collation)) { $this->forcecollate = $conf->db->dolibarr_main_db_collation; } $this->database_user = $user; $this->database_host = $host; $this->database_port = $port; $this->transaction_opened = 0; //print « Name DB: $host,$user,$pass,$name
    « ; if (!class_exists(‹ mysqli ›)) { $this->connected = false; $this->ok = false; $this->error = « Mysqli PHP functions for using Mysqli driver are not available in this version of PHP. Try to use another driver. »; dol_syslog(get_class($this). »::DoliDBMysqli : Mysqli PHP functions for using Mysqli driver are not available in this version of PHP. Try to use another driver. », LOG_ERR); } if (!$host) { $this->connected = false; $this->ok = false; $this->error = $langs->trans(« ErrorWrongHostParameter »); dol_syslog(get_class($this)."::DoliDBMysqli : Connect error, wrong host parameters", LOG_ERR); } // Try server connection // We do not try to connect to database, only to server. Connect to database is done later in constrcutor $this->db = $this->connect($host, $user, $pass, ‹  ›, $port); if ($this->db->connect_errno) { $this->connected = false; $this->ok = false; $this->error = $this->db->connect_error; dol_syslog(get_class($this)."::DoliDBMysqli Connect error: ".$this->error, LOG_ERR); } else { $this->connected = true; $this->ok = true; } // If server connection is ok, we try to connect to the database if ($this->connected && $name) { if ($this->select_db($name)) { $this->database_selected = true; $this->database_name = $name; $this->ok = true; // If client is old latin, we force utf8 $clientmustbe = empty($conf->db->dolibarr_main_db_character_set) ? ‹ utf8 › : $conf->db->dolibarr_main_db_character_set; if (preg_match(’/latin1/’, $clientmustbe)) { $clientmustbe = ‹ utf8 ›; } if ($this->db->character_set_name() != $clientmustbe) { $this->db->set_charset($clientmustbe); // This set charset, but with a bad collation $collation = $conf->db->dolibarr_main_db_collation; if (preg_match(’/latin1/’, $collation)) { $collation = ‹ utf8_unicode_ci ›; } if (!preg_match(’/general/’, $collation)) { $this->db->query("SET collation_connection = « .$collation); } } } else { $this->database_selected = false; $this->database_name = ‹  ›; $this->ok = false; $this->error = $this->error(); dol_syslog(get_class($this). »::DoliDBMysqli : Select_db error ".$this->error, LOG_ERR); } } else { // Pas de selection de base demandee, ok ou ko $this->database_selected = false; if ($this->connected) { // If client is old latin, we force utf8 $clientmustbe = empty($conf->db->dolibarr_main_db_character_set) ? ‹ utf8 › : $conf->db->dolibarr_main_db_character_set; if (preg_match(’/latin1/’, $clientmustbe)) { $clientmustbe = ‹ utf8 ›; } if (preg_match(’/utf8mb4/’, $clientmustbe)) { $clientmustbe = ‹ utf8 ›; } if ($this->db->character_set_name() != $clientmustbe) { $this->db->set_charset($clientmustbe); // This set utf8_unicode_ci $collation = $conf->db->dolibarr_main_db_collation; if (preg_match(’/latin1/’, $collation)) { $collation = ‹ utf8_unicode_ci ›; } if (preg_match(’/utf8mb4/’, $collation)) { $collation = ‹ utf8_unicode_ci ›; } if (!preg_match(’/general/’, $collation)) { $this->db->query("SET collation_connection = ".$collation); } } } } } /
    * * Convert a SQL request in Mysql syntax to native syntax * * @param string $line SQL request line to convert * @param string $type Type of SQL order (‹ ddl › for insert, update, select, delete or ‹ dml › for create, alter…) * @return string SQL request line converted / public static function convertSQLFromMysql($line, $type = ‹ ddl ›) { return $line; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Select a database * * @param string $database Name of database * @return boolean true if OK, false if KO / public function select_db($database) { // phpcs:enable dol_syslog(get_class($this)."::select_db database=".$database, LOG_DEBUG); return $this->db->select_db($database); } /* * Connect to server * * @param string $host Database server host * @param string $login Login * @param string $passwd Password * @param string $name Name of database (not used for mysql, used for pgsql) * @param integer $port Port of database server * @return mysqli Database access object * @see close() / public function connect($host, $login, $passwd, $name, $port = 0) { dol_syslog(get_class($this)."::connect host=$host, port=$port, login=$login, passwd=–hidden–, name=$name", LOG_DEBUG); // Can also be // mysqli::init(); mysql::options(MYSQLI_INIT_COMMAND, ‹ SET AUTOCOMMIT = 0 ›); mysqli::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5); // return mysqli::real_connect($host, $user, $pass, $db, $port); return new mysqli($host, $login, $passwd, $name, $port); } /* * Return version of database server * * @return string Version string / public function getVersion() { return $this->db->server_info; } /* * Return version of database client driver * * @return string Version string / public function getDriverInfo() { return $this->db->client_info; } /* * Close database connexion * * @return bool True if disconnect successfull, false otherwise * @see connect() / public function close() { if ($this->db) { if ($this->transaction_opened > 0) { dol_syslog(get_class($this)."::close Closing a connection with an opened transaction depth=".$this->transaction_opened, LOG_ERR); } $this->connected = false; return $this->db->close(); } return false; } /* * Execute a SQL request and return the resultset * * @param string $query SQL query string * @param int $usesavepoint 0=Default mode, 1=Run a savepoint before and a rollback to savepoint if error (this allow to have some request with errors inside global transactions). * Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints. * @param string $type Type of SQL order (‹ ddl › for insert, update, select, delete or ‹ dml › for create, alter…) * @return bool|mysqli_result Resultset of answer / public function query($query, $usesavepoint = 0, $type = ‹ auto ›) { global $conf; $query = trim($query); if (!in_array($query, array(‹ BEGIN ›, ‹ COMMIT ›, ‹ ROLLBACK ›))) { $SYSLOG_SQL_LIMIT = 10000; // limit log to 10kb per line to limit DOS attacks dol_syslog(‹ sql= ›.substr($query, 0, $SYSLOG_SQL_LIMIT), LOG_DEBUG); } if (empty($query)) { return false; // Return false = error if empty request } if (!$this->database_name) { // Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE) $ret = $this->db->query($query); } else { $ret = $this->db->query($query); } if (!preg_match("/^COMMIT/i", $query) && !preg_match("/^ROLLBACK/i", $query)) { // Si requete utilisateur, on la sauvegarde ainsi que son resultset if (!$ret) { $this->lastqueryerror = $query; $this->lasterror = $this->error(); $this->lasterrno = $this->errno(); if ($conf->global->SYSLOG_LEVEL < LOG_DEBUG) { dol_syslog(get_class($this)."::query SQL Error query: « .$query, LOG_ERR); // Log of request was not yet done previously } dol_syslog(get_class($this). »::query SQL Error message: « .$this->lasterrno. » ".$this->lasterror, LOG_ERR); //var_dump(debug_print_backtrace()); } $this->lastquery = $query; $this->_results = $ret; } return $ret; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Renvoie la ligne courante (comme un objet) pour le curseur resultset * * @param mysqli_result $resultset Curseur de la requete voulue * @return object|null Object result line or null if KO or end of cursor / public function fetch_object($resultset) { // phpcs:enable // Si le resultset n’est pas fourni, on prend le dernier utilise sur cette connexion if (!is_object($resultset)) { $resultset = $this->_results; } return $resultset->fetch_object(); } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Return datas as an array * * @param mysqli_result $resultset Resultset of request * @return array|null Array or null if KO or end of cursor / public function fetch_array($resultset) { // phpcs:enable // If resultset not provided, we take the last used by connexion if (!is_object($resultset)) { $resultset = $this->_results; } return $resultset->fetch_array(); } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Return datas as an array * * @param mysqli_result $resultset Resultset of request * @return array|null|int Array or null if KO or end of cursor or 0 if resultset is bool / public function fetch_row($resultset) { // phpcs:enable // If resultset not provided, we take the last used by connexion if (!is_bool($resultset)) { if (!is_object($resultset)) { $resultset = $this->_results; } return $resultset->fetch_row(); } else { // si le curseur est un booleen on retourne la valeur 0 return 0; } } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Return number of lines for result of a SELECT * * @param mysqli_result $resultset Resulset of requests * @return int Nb of lines * @see affected_rows() / public function num_rows($resultset) { // phpcs:enable // If resultset not provided, we take the last used by connexion if (!is_object($resultset)) { $resultset = $this->_results; } return $resultset->num_rows; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Return the number of lines in the result of a request INSERT, DELETE or UPDATE * * @param mysqli_result $resultset Curseur de la requete voulue * @return int Number of lines * @see num_rows() / public function affected_rows($resultset) { // phpcs:enable // If resultset not provided, we take the last used by connexion if (!is_object($resultset)) { $resultset = $this->_results; } // mysql necessite un link de base pour cette fonction contrairement // a pqsql qui prend un resultset return $this->db->affected_rows; } /* * Libere le dernier resultset utilise sur cette connexion * * @param mysqli_result $resultset Curseur de la requete voulue * @return void / public function free($resultset = null) { // If resultset not provided, we take the last used by connexion if (!is_object($resultset)) { $resultset = $this->results; } // Si resultset en est un, on libere la memoire if (is_object($resultset)) { $resultset->free_result(); } } /* * Escape a string to insert data * * @param string $stringtoencode String to escape * @return string String escaped / public function escape($stringtoencode) { return $this->db->real_escape_string($stringtoencode); } /* * Return generic error code of last operation. * * @return string Error code (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS…) */ public function errno() { if (!$this->connected) { // Si il y a eu echec de connexion, $this->db n’est pas valide. return ‹ DB_ERROR_FAILED_TO_CONNECT ›; } else { // Constants to convert a MySql error code to a generic Dolibarr error code $errorcode_map = array( 1004 => ‹ DB_ERROR_CANNOT_CREATE ›, 1005 => ‹ DB_ERROR_CANNOT_CREATE ›, 1006 => ‹ DB_ERROR_CANNOT_CREATE ›, 1007 => ‹ DB_ERROR_ALREADY_EXISTS ›, 1008 => ‹ DB_ERROR_CANNOT_DROP ›, 1022 => ‹ DB_ERROR_KEY_NAME_ALREADY_EXISTS ›, 1025 => ‹ DB_ERROR_NO_FOREIGN_KEY_TO_DROP ›, 1044 => ‹ DB_ERROR_ACCESSDENIED ›, 1046 => ‹ DB_ERROR_NODBSELECTED ›, 1048 => ‹ DB_ERROR_CONSTRAINT ›, 1050 => ‹ DB_ERROR_TABLE_ALREADY_EXISTS ›, 1051 => ‹ DB_ERROR_NOSUCHTABLE ›, 1054 => ‹ DB_ERROR_NOSUCHFIELD ›, 1060 => ‹ DB_ERROR_COLUMN_ALREADY_EXISTS ›, 1061 => ‹ DB_ERROR_KEY_NAME_ALREADY_EXISTS ›, 1062 => ‹ DB_ERROR_RECORD_ALREADY_EXISTS ›, 1064 => ‹ DB_ERROR_SYNTAX ›, 1068 => ‹ DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS ›, 1075 => ‹ DB_ERROR_CANT_DROP_PRIMARY_KEY ›, 1091 => ‹ DB_ERROR_NOSUCHFIELD ›, 1100 => ‹ DB_ERROR_NOT_LOCKED ›, 1136 => ‹ DB_ERROR_VALUE_COUNT_ON_ROW ›, 1146 => ‹ DB_ERROR_NOSUCHTABLE ›, 1215 => ‹ DB_ERROR_CANNOT_ADD_FOREIGN_KEY_CONSTRAINT ›, 1216 => ‹ DB_ERROR_NO_PARENT ›, 1217 => ‹ DB_ERROR_CHILD_EXISTS ›, 1396 => ‹ DB_ERROR_USER_ALREADY_EXISTS ›, // When creating a user that already existing 1451 => ‹ DB_ERROR_CHILD_EXISTS ›, 1826 => ‹ DB_ERROR_KEY_NAME_ALREADY_EXISTS › ); if (isset($errorcode_map[$this->db->errno])) { return $errorcode_map[$this->db->errno]; } $errno = $this->db->errno; return ($errno ? 'DB_ERROR’.$errno : ‹ 0 ›); } } /** * Return description of last error * * @return string Error text / public function error() { if (!$this->connected) { // Si il y a eu echec de connexion, $this->db n’est pas valide pour mysqli_error. return ‹ Not connected. Check setup parameters in conf/conf.php file and your mysql client and server versions ›; } else { return $this->db->error; } } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Get last ID after an insert INSERT * * @param string $tab Table name concerned by insert. Ne sert pas sous MySql mais requis pour compatibilite avec Postgresql * @param string $fieldid Field name * @return int|string Id of row / public function last_insert_id($tab, $fieldid = ‹ rowid ›) { // phpcs:enable return $this->db->insert_id; } /* * Encrypt sensitive data in database * Warning: This function includes the escape, so it must use direct value * * @param string $fieldorvalue Field name or value to encrypt * @param int $withQuotes Return string with quotes * @return string XXX(field) or XXX(‹ value ›) or field or ‹ value › * / public function encrypt($fieldorvalue, $withQuotes = 0) { global $conf; // Type of encryption (2: AES (recommended), 1: DES , 0: no encryption) $cryptType = (!empty($conf->db->dolibarr_main_db_encryption) ? $conf->db->dolibarr_main_db_encryption : 0); //Encryption key $cryptKey = (!empty($conf->db->dolibarr_main_db_cryptkey) ? $conf->db->dolibarr_main_db_cryptkey : ‹  ›); $return = ($withQuotes ? « ’ » : «  »).$this->escape($fieldorvalue).($withQuotes ? « ’ » : «  »); if ($cryptType && !empty($cryptKey)) { if ($cryptType == 2) { $return = ‹ AES_ENCRYPT( ›.$return.’,’’.$cryptKey.’’)’; } elseif ($cryptType == 1) { $return = ‹ DES_ENCRYPT( ›.$return.’,’’.$cryptKey.’’)’; } } return $return; } /* * Decrypt sensitive data in database * * @param string $value Value to decrypt * @return string Decrypted value if used / public function decrypt($value) { global $conf; // Type of encryption (2: AES (recommended), 1: DES , 0: no encryption) $cryptType = (!empty($conf->db->dolibarr_main_db_encryption) ? $conf->db->dolibarr_main_db_encryption : 0); //Encryption key $cryptKey = (!empty($conf->db->dolibarr_main_db_cryptkey) ? $conf->db->dolibarr_main_db_cryptkey : ‹  ›); $return = $value; if ($cryptType && !empty($cryptKey)) { if ($cryptType == 2) { $return = ‹ AES_DECRYPT( ›.$value.’,’’.$cryptKey.’’)’; } elseif ($cryptType == 1) { $return = ‹ DES_DECRYPT( ›.$value.’,’’.$cryptKey.’’)’; } } return $return; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Return connexion ID * * @return string Id connexion / public function DDLGetConnectId() { // phpcs:enable $resql = $this->query(‹ SELECT CONNECTION_ID() ›); if ($resql) { $row = $this->fetch_row($resql); return $row[0]; } else { return ‹ ? ›; } } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * Create a new database * Do not use function xxx_create_db (xxx=mysql, …) as they are deprecated * We force to create database with charset this->forcecharset and collate this->forcecollate * * @param string $database Database name to create * @param string $charset Charset used to store data * @param string $collation Charset used to sort data * @param string $owner Username of database owner * @return bool|mysqli_result resource defined if OK, null if KO / public function DDLCreateDb($database, $charset = ‹  ›, $collation = ‹  ›, $owner = ‹  ›) { // phpcs:enable if (empty($charset)) { $charset = $this->forcecharset; } if (empty($collation)) { $collation = $this->forcecollate; } // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci $sql = "CREATE DATABASE ".$this->escape($database).""; $sql .= " DEFAULT CHARACTER SET ".$this->escape($charset)." DEFAULT COLLATE ".$this->escape($collation).""; dol_syslog($sql, LOG_DEBUG); $ret = $this->query($sql); if (!$ret) { // We try again for compatibility with Mysql < 4.1.1 $sql = "CREATE DATABASE ".$this->escape($database).""; dol_syslog($sql, LOG_DEBUG); $ret = $this->query($sql); } return $ret; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /* * List tables into a

Bonjour,
Avez-vous regardé les logs mysql ? Si vous essayez de démarrer le service manuellement, que se passe-t-il ?

Vous n’avez pas de sauvegarde ?

A mon avis, vous avez des fichiers corrompus suite au crash de Windows.
A part une réinstallation de Doliwamp … Mais cela n’engage que moi.
Je ne travaille plus sous Windows. Uniquement sous Linux.