mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Db collation standardisation (#5932)
* initial work to standardise collation * more updates * final bits for collation update (famous last words) * Rename 165.sql to 166.sql * Update schema version inside 166.sql * moved schema file 166->171
This commit is contained in:
22
validate.php
22
validate.php
@@ -172,6 +172,28 @@ if (empty($strict_mode) === false) {
|
||||
print_fail("You have not set sql_mode='' in your mysql config");
|
||||
}
|
||||
|
||||
// Test for correct character set and collation
|
||||
$collation = dbFetchRows("SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA S WHERE schema_name = '" . $config['db_name'] . "' AND ( DEFAULT_CHARACTER_SET_NAME != 'utf8' OR DEFAULT_COLLATION_NAME != 'utf8_unicode_ci')");
|
||||
if (empty($collation) !== true) {
|
||||
print_fail('MySQL Database collation is wrong: ' . implode(' ', $collation[0]));
|
||||
}
|
||||
$collation = dbFetchRows("SELECT T.TABLE_NAME, C.CHARACTER_SET_NAME, C.COLLATION_NAME FROM information_schema.TABLES AS T, information_schema.COLLATION_CHARACTER_SET_APPLICABILITY AS C WHERE C.collation_name = T.table_collation AND T.table_schema = '" . $config['db_name'] . "' AND ( C.CHARACTER_SET_NAME != 'utf8' OR C.COLLATION_NAME != 'utf8_unicode_ci' );");
|
||||
if (empty($collation) !== true) {
|
||||
$error = '';
|
||||
foreach ($collation as $id => $data) {
|
||||
$error .= implode(' ', $data) . PHP_EOL;
|
||||
}
|
||||
print_fail('MySQL tables collation is wrong: ' . $error);
|
||||
}
|
||||
$collation = dbFetchRows("SELECT TABLE_NAME, COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . $config['db_name'] . "' AND ( CHARACTER_SET_NAME != 'utf8' OR COLLATION_NAME != 'utf8_unicode_ci' );");
|
||||
if (empty($collation) !== true) {
|
||||
$error = '';
|
||||
foreach ($collation as $id => $data) {
|
||||
$error .= implode(' ', $data) . PHP_EOL;
|
||||
}
|
||||
print_fail('MySQL column collation is wrong: ' . $error);
|
||||
}
|
||||
|
||||
$ini_tz = ini_get('date.timezone');
|
||||
$sh_tz = rtrim(shell_exec('date +%Z'));
|
||||
$php_tz = date('T');
|
||||
|
Reference in New Issue
Block a user