diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index a717afe0ec1..cf087ec072c 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -40,7 +40,7 @@ class DoliDBPgsql //! Database label static $label='PostgreSQL'; // Label of manager //! Charset - var $forcecharset='latin1'; // Can't be static as it may be forced with a dynamic value + var $forcecharset='UTF8'; // Can't be static as it may be forced with a dynamic value //! Version min database static $versionmin=array(8,4,0); // Version min database @@ -111,6 +111,7 @@ class DoliDBPgsql // Essai connexion serveur //print "$host, $user, $pass, $name, $port"; $this->db = $this->connect($host, $user, $pass, $name, $port); + if ($this->db) { $this->connected = 1; @@ -374,12 +375,13 @@ class DoliDBPgsql $name = str_replace(array("\\", "'"), array("\\\\", "\\'"), $name); $port = str_replace(array("\\", "'"), array("\\\\", "\\'"), $port); - //if (! $name) $name="postgres"; + if (! $name) $name="postgres"; // When try to connect using admin user // try first Unix domain socket (local) if (! $host || $host == "" || $host == "localhost" || $host == "127.0.0.1") { - $con_string = "dbname='".$name."' user='".$login."' password='".$passwd."'"; + $con_string = "dbname='".$name."' user='".$login."' password='".$passwd."'"; // $name may be empty + //print "$con_string";exit; $this->db = pg_connect($con_string); } @@ -978,10 +980,15 @@ class DoliDBPgsql */ function DDLCreateDb($database,$charset='',$collation='',$owner='') { - if (empty($charset)) $charset=$this->forcecharset; + if (empty($charset)) $charset=$this->forcecharset; if (empty($collation)) $collation=$this->forcecollate; - $ret=$this->query('CREATE DATABASE '.$database.' OWNER '.$owner.' ENCODING \''.$charset.'\''); + // Test charset match LC_TYPE (pgsql error otherwise) + //print $charset.' '.setlocale(LC_CTYPE,'0'); exit; + + $sql='CREATE DATABASE '.$database.' OWNER '.$owner.' ENCODING \''.$charset.'\''; + dol_syslog($sql,LOG_DEBUG); + $ret=$this->query($sql); return $ret; } diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 2e6f0bd1f8f..a80de78f44f 100755 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -92,8 +92,8 @@ $dolibarr_main_document_root_alt=trim($dolibarr_main_document_root_alt); if (empty($dolibarr_main_db_port)) $dolibarr_main_db_port=0; // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql' if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // Pour compatibilite avec anciennes configs, si non defini, on prend 'mysql' if (empty($dolibarr_main_db_prefix)) $dolibarr_main_db_prefix='llx_'; -if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set='latin1'; // Old installation -if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation='latin1_swedish_ci'; // Old installation +if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($dolibarr_main_db_type=='mysql'?'latin1':''); // Old installation +if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($dolibarr_main_db_type=='mysql'?'latin1_swedish_ci':''); // Old installation if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey=''; if (empty($dolibarr_main_limit_users)) $dolibarr_main_limit_users=0; diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php index 8bdf0df1c27..9a20702124e 100644 --- a/htdocs/install/etape1.php +++ b/htdocs/install/etape1.php @@ -518,7 +518,8 @@ if (! $error && $db->connected && $action == "set") if (! $error && (isset($_POST["db_create_database"]) && $_POST["db_create_database"] == "on")) { dolibarr_install_syslog("etape1: Create database : ".$dolibarr_main_db_name, LOG_DEBUG); - $db=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,'',$conf->db->port); + $newdb=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,'',$conf->db->port); + //print 'eee'.$conf->db->type." ".$conf->db->host." ".$userroot." ".$passroot." ".$conf->db->port." ".$db->connected." ".$newdb->forcecharset;exit; if ($db->connected) { @@ -545,6 +546,7 @@ if (! $error && $db->connected && $action == "set") // Affiche aide diagnostique print '
'; print $langs->trans("ErrorFailedToCreateDatabase",$dolibarr_main_db_name).'
'; + print $db->lasterror().'
'; print $langs->trans("IfDatabaseExistsGoBackAndCheckCreate"); print '
'; print ''; @@ -575,7 +577,7 @@ if (! $error && $db->connected && $action == "set") } // Fin si "creation database" - // We testOn test maintenant l'acces par le user base dolibarr + // We test access with dolibarr database user (not admin) if (! $error) { dolibarr_install_syslog("etape1: connexion de type=".$conf->db->type." sur host=".$conf->db->host." port=".$conf->db->port." user=".$conf->db->user." name=".$conf->db->name, LOG_DEBUG); diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index e3c5232bd8b..d231ccb3fd6 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -287,9 +287,9 @@ function conf($dolibarr_main_document_root) if (empty($character_set_client)) $character_set_client="UTF-8"; $conf->file->character_set_client=strtoupper($character_set_client); - if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set='latin1'; // Old installation + if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysql'?'latin1':''); // Old installation $conf->db->character_set=$dolibarr_main_db_character_set; - if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation='latin1_swedish_ci'; // Old installation + if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysql'?'latin1_swedish_ci':''); // Old installation $conf->db->dolibarr_main_db_collation=$dolibarr_main_db_collation; if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption; diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index 222f5a807e2..1938c854e38 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -107,10 +107,18 @@ if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_m define('MAIN_DB_PREFIX',(isset($dolibarr_main_db_prefix)?$dolibarr_main_db_prefix:'')); define('DOL_DATA_ROOT',(isset($dolibarr_main_data_root)?$dolibarr_main_data_root:'')); -if (empty($conf->file->character_set_client)) $conf->file->character_set_client=$charset; -if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='latin1_swedish_ci'; -if (empty($conf->db->dolibarr_main_db_encryption)) $conf->db->dolibarr_main_db_encryption=0; -if (empty($conf->db->dolibarr_main_db_cryptkey)) $conf->db->dolibarr_main_db_cryptkey=''; + +if (empty($character_set_client)) $character_set_client="UTF-8"; +$conf->file->character_set_client=strtoupper($character_set_client); +if (empty($dolibarr_main_db_character_set)) $dolibarr_main_db_character_set=($conf->db->type=='mysql'?'latin1':''); // Old installation +$conf->db->character_set=$dolibarr_main_db_character_set; +if (empty($dolibarr_main_db_collation)) $dolibarr_main_db_collation=($conf->db->type=='mysql'?'latin1_swedish_ci':''); // Old installation +$conf->db->dolibarr_main_db_collation=$dolibarr_main_db_collation; +if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; +$conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption; +if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey=''; +$conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey; + if (empty($conf->db->user)) $conf->db->user=''; @@ -151,7 +159,7 @@ function conf($dolibarr_main_document_root) $conf->db->user = trim($dolibarr_main_db_user); $conf->db->pass = trim($dolibarr_main_db_pass); - if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='latin1_swedish_ci'; + if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_general_ci'; return 1; }