|
@@ -97,6 +97,7 @@ print 'Option set_empty_time_spent_amount (\'test\' or \'confirmed\') is '.(GETP
|
|
|
// Structure
|
|
|
print 'Option force_utf8_on_tables (force utf8 + row=dynamic), for mysql/mariadb only (\'test\' or \'confirmed\') is '.(GETPOST('force_utf8_on_tables', 'alpha') ?GETPOST('force_utf8_on_tables', 'alpha') : 'undefined').'<br>'."\n";
|
|
|
print "Option force_utf8mb4_on_tables (force utf8mb4 + row=dynamic, EXPERIMENTAL!), for mysql/mariadb only ('test' or 'confirmed') is ".(GETPOST('force_utf8mb4_on_tables', 'alpha') ? GETPOST('force_utf8mb4_on_tables', 'alpha') : 'undefined')."<br>\n";
|
|
|
+print "Option force_collation_from_conf_on_tables (force ".$conf->db->character_set."/".$conf->db->dolibarr_main_db_collation." + row=dynamic), for mysql/mariadb only ('test' or 'confirmed') is ".(GETPOST('force_collation_from_conf_on_tables', 'alpha') ? GETPOST('force_collation_from_conf_on_tables', 'alpha') : 'undefined')."<br>\n";
|
|
|
// Rebuild sequence
|
|
|
print 'Option rebuild_sequences, for postgresql only (\'test\' or \'confirmed\') is '.(GETPOST('rebuild_sequences', 'alpha') ?GETPOST('rebuild_sequences', 'alpha') : 'undefined').'<br>'."\n";
|
|
|
print '<br>';
|
|
@@ -178,7 +179,7 @@ $oneoptionset = (GETPOST('standard', 'alpha') || GETPOST('restore_thirdparties_l
|
|
|
|| GETPOST('clean_orphelin_dir', 'alpha') || GETPOST('clean_product_stock_batch', 'alpha') || GETPOST('set_empty_time_spent_amount', 'alpha') || GETPOST('rebuild_product_thumbs', 'alpha')
|
|
|
|| GETPOST('clean_perm_table', 'alpha')
|
|
|
|| GETPOST('force_disable_of_modules_not_found', 'alpha')
|
|
|
- || GETPOST('force_utf8_on_tables', 'alpha') || GETPOST('force_utf8mb4_on_tables', 'alpha')
|
|
|
+ || GETPOST('force_utf8_on_tables', 'alpha') || GETPOST('force_utf8mb4_on_tables', 'alpha') || GETPOST('force_collation_from_conf_on_tables', 'alpha')
|
|
|
|| GETPOST('rebuild_sequences', 'alpha'));
|
|
|
|
|
|
if ($ok && $oneoptionset) {
|
|
@@ -1366,6 +1367,62 @@ if ($ok && GETPOST('force_utf8mb4_on_tables', 'alpha')) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+if ($ok && GETPOST('force_collation_from_conf_on_tables', 'alpha')) {
|
|
|
+ print '<tr><td colspan="2"><br>*** Force page code and collation of tables into '.$conf->db->character_set.'/'.$conf->db->dolibarr_main_db_collation.' and row_format=dynamic (for mysql/mariadb only)</td></tr>';
|
|
|
+
|
|
|
+ if ($db->type == "mysql" || $db->type == "mysqli") {
|
|
|
+ $force_collation_from_conf_on_tables = GETPOST('force_collation_from_conf_on_tables', 'alpha');
|
|
|
+
|
|
|
+ $listoftables = $db->DDLListTablesFull($db->database_name);
|
|
|
+
|
|
|
+ // Disable foreign key checking for avoid errors
|
|
|
+ if ($force_collation_from_conf_on_tables == 'confirmed') {
|
|
|
+ $sql = 'SET FOREIGN_KEY_CHECKS=0';
|
|
|
+ print '<!-- '.$sql.' -->';
|
|
|
+ $resql = $db->query($sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ($listoftables as $table) {
|
|
|
+ // do not convert llx_const if mysql encrypt/decrypt is used
|
|
|
+ if ($conf->db->dolibarr_main_db_encryption != 0 && preg_match('/\_const$/', $table[0])) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if ($table[1] == 'VIEW') {
|
|
|
+ print '<tr><td colspan="2">'.$table[0].' is a '.$table[1].' (Skipped)</td></tr>';
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ print '<tr><td colspan="2">';
|
|
|
+ print $table[0];
|
|
|
+ $sql1 = "ALTER TABLE ".$table[0]." ROW_FORMAT=dynamic";
|
|
|
+ $sql2 = "ALTER TABLE ".$table[0]." CONVERT TO CHARACTER SET ".$conf->db->character_set." COLLATE ".$conf->db->dolibarr_main_db_collation;
|
|
|
+ print '<!-- '.$sql1.' -->';
|
|
|
+ print '<!-- '.$sql2.' -->';
|
|
|
+ if ($force_collation_from_conf_on_tables == 'confirmed') {
|
|
|
+ $resql1 = $db->query($sql1);
|
|
|
+ if ($resql1) {
|
|
|
+ $resql2 = $db->query($sql2);
|
|
|
+ } else {
|
|
|
+ $resql2 = false;
|
|
|
+ }
|
|
|
+ print ' - Done ('.(($resql1 && $resql2) ? 'OK' : 'KO').')';
|
|
|
+ } else {
|
|
|
+ print ' - Disabled';
|
|
|
+ }
|
|
|
+ print '</td></tr>';
|
|
|
+ }
|
|
|
+
|
|
|
+ // Enable foreign key checking
|
|
|
+ if ($force_collation_from_conf_on_tables == 'confirmed') {
|
|
|
+ $sql = 'SET FOREIGN_KEY_CHECKS=1';
|
|
|
+ print '<!-- '.$sql.' -->';
|
|
|
+ $resql = $db->query($sql);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ print '<tr><td colspan="2">Not available with database type '.$db->type.'</td></tr>';
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// rebuild sequences for pgsql
|
|
|
if ($ok && GETPOST('rebuild_sequences', 'alpha')) {
|
|
|
print '<tr><td colspan="2"><br>*** Force to rebuild sequences (for postgresql only)</td></tr>';
|