From c26d115dae8ac8f998913e5a5fe2eb69d12108e0 Mon Sep 17 00:00:00 2001 From: Gerd Katzenbeisser Date: Sun, 15 Sep 2024 08:51:34 +0000 Subject: [PATCH 1/4] Remove clean.sql files The upgrade logic does not seem to consider it. --- database_schema/upgrades/2.1/clean.sql | 23 ----------------------- database_schema/upgrades/2.2/clean.sql | 5 ----- database_schema/upgrades/2.3/clean.sql | 1 - database_schema/upgrades/2.4/clean.sql | 1 - database_schema/upgrades/2.5/clean.sql | 1 - database_schema/upgrades/2.6/clean.sql | 0 database_schema/upgrades/2.8/clean.sql | 0 phing-tasks/UpgradeDbTask.php | 1 - 8 files changed, 32 deletions(-) delete mode 100644 database_schema/upgrades/2.1/clean.sql delete mode 100644 database_schema/upgrades/2.2/clean.sql delete mode 100644 database_schema/upgrades/2.3/clean.sql delete mode 100644 database_schema/upgrades/2.4/clean.sql delete mode 100644 database_schema/upgrades/2.5/clean.sql delete mode 100644 database_schema/upgrades/2.6/clean.sql delete mode 100644 database_schema/upgrades/2.8/clean.sql diff --git a/database_schema/upgrades/2.1/clean.sql b/database_schema/upgrades/2.1/clean.sql deleted file mode 100644 index ab04e9671..000000000 --- a/database_schema/upgrades/2.1/clean.sql +++ /dev/null @@ -1,23 +0,0 @@ -SET foreign_key_checks = 0; - -DROP TABLE IF EXISTS `dbversion`; - -ALTER TABLE `resources` DROP FOREIGN KEY `admin_group_id`; -ALTER TABLE `resources` DROP COLUMN `admin_group_id`; - -DELETE FROM roles WHERE role_id = 3; - -DROP INDEX `public_id` ON `users`; -ALTER TABLE `users` DROP COLUMN `public_id`; - -DROP INDEX `public_id` ON `resources`; -ALTER TABLE `resources` DROP COLUMN `public_id`; - -DROP INDEX `public_id` ON `schedules`; -ALTER TABLE `schedules` DROP COLUMN `public_id`; - -ALTER TABLE `users` DROP COLUMN `allow_calendar_subscription`; -ALTER TABLE `resources` DROP COLUMN `allow_calendar_subscription`; -ALTER TABLE `schedules` DROP COLUMN `allow_calendar_subscription`; - -SET foreign_key_checks = 1; \ No newline at end of file diff --git a/database_schema/upgrades/2.2/clean.sql b/database_schema/upgrades/2.2/clean.sql deleted file mode 100644 index 025894a2f..000000000 --- a/database_schema/upgrades/2.2/clean.sql +++ /dev/null @@ -1,5 +0,0 @@ -SET foreign_key_checks = 0; - -DROP TABLE IF EXISTS `custom_attributes`; - -SET foreign_key_checks = 1; \ No newline at end of file diff --git a/database_schema/upgrades/2.3/clean.sql b/database_schema/upgrades/2.3/clean.sql deleted file mode 100644 index 7489accbf..000000000 --- a/database_schema/upgrades/2.3/clean.sql +++ /dev/null @@ -1 +0,0 @@ --- \ No newline at end of file diff --git a/database_schema/upgrades/2.4/clean.sql b/database_schema/upgrades/2.4/clean.sql deleted file mode 100644 index 7489accbf..000000000 --- a/database_schema/upgrades/2.4/clean.sql +++ /dev/null @@ -1 +0,0 @@ --- \ No newline at end of file diff --git a/database_schema/upgrades/2.5/clean.sql b/database_schema/upgrades/2.5/clean.sql deleted file mode 100644 index 7489accbf..000000000 --- a/database_schema/upgrades/2.5/clean.sql +++ /dev/null @@ -1 +0,0 @@ --- \ No newline at end of file diff --git a/database_schema/upgrades/2.6/clean.sql b/database_schema/upgrades/2.6/clean.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/database_schema/upgrades/2.8/clean.sql b/database_schema/upgrades/2.8/clean.sql deleted file mode 100644 index e69de29bb..000000000 diff --git a/phing-tasks/UpgradeDbTask.php b/phing-tasks/UpgradeDbTask.php index c243043c7..5c03c33ae 100644 --- a/phing-tasks/UpgradeDbTask.php +++ b/phing-tasks/UpgradeDbTask.php @@ -77,7 +77,6 @@ private function ExecuteUpgrade($upgradeDir, $upgrade) print("Upgrading database to version $upgrade\n"); - // $this->ExecuteFile($fullUpgradeDir, 'clean.sql'); $this->ExecuteFile($fullUpgradeDir, 'schema.sql'); $this->ExecuteFile($fullUpgradeDir, 'data.sql'); From b53e6333e34165b0b480015b72adc7105dba41db Mon Sep 17 00:00:00 2001 From: Gerd Katzenbeisser Date: Sun, 15 Sep 2024 17:29:41 +0000 Subject: [PATCH 2/4] Set uf8mb4 in mysqli connection refs #405 --- lib/Database/MySQL/MySqlConnection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Database/MySQL/MySqlConnection.php b/lib/Database/MySQL/MySqlConnection.php index 87c9f119c..edde6afb8 100644 --- a/lib/Database/MySQL/MySqlConnection.php +++ b/lib/Database/MySQL/MySqlConnection.php @@ -40,7 +40,7 @@ public function Connect() $this->_db = @mysqli_connect($this->_hostSpec, $this->_dbUser, $this->_dbPassword, $this->_dbName, $this->_port); $selected = @mysqli_select_db($this->_db, $this->_dbName); - @mysqli_set_charset($this->_db, 'utf8'); + @mysqli_set_charset($this->_db, 'utf8mb4'); if (!$this->_db || !$selected) { Log::Error("Error connecting to database\nCheck your database settings in the config file\n%s", @mysqli_error($this->_db)); From b6064af98688288782787aadc57e77147a7098c7 Mon Sep 17 00:00:00 2001 From: Gerd Katzenbeisser Date: Sun, 15 Sep 2024 17:38:26 +0000 Subject: [PATCH 3/4] Add database upgrade files refs #405 --- database_schema/upgrades/2.9/data.sql | 1 + database_schema/upgrades/2.9/schema.sql | 78 +++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 database_schema/upgrades/2.9/data.sql create mode 100644 database_schema/upgrades/2.9/schema.sql diff --git a/database_schema/upgrades/2.9/data.sql b/database_schema/upgrades/2.9/data.sql new file mode 100644 index 000000000..449737798 --- /dev/null +++ b/database_schema/upgrades/2.9/data.sql @@ -0,0 +1 @@ +insert into `dbversion` values('2.9', now()); \ No newline at end of file diff --git a/database_schema/upgrades/2.9/schema.sql b/database_schema/upgrades/2.9/schema.sql new file mode 100644 index 000000000..aeb31db39 --- /dev/null +++ b/database_schema/upgrades/2.9/schema.sql @@ -0,0 +1,78 @@ +ALTER TABLE `accessories` +CHANGE COLUMN `accessory_name` `accessory_name` VARCHAR(85) CHARACTER SET 'utf8mb4' NOT NULL ; + +ALTER TABLE `announcements` +CHANGE COLUMN `announcement_text` `announcement_text` TEXT CHARACTER SET 'utf8mb4' NOT NULL ; + +ALTER TABLE `blackout_series` +CHANGE COLUMN `title` `title` VARCHAR(85) CHARACTER SET 'utf8mb4' NOT NULL , +CHANGE COLUMN `description` `description` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `credit_log` +CHANGE COLUMN `credit_note` `credit_note` VARCHAR(1000) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `custom_attribute_values` +CHANGE COLUMN `attribute_value` `attribute_value` TEXT CHARACTER SET 'utf8mb4' NOT NULL ; + +ALTER TABLE `custom_attributes` +CHANGE COLUMN `display_label` `display_label` VARCHAR(50) CHARACTER SET 'utf8mb4' NOT NULL , +CHANGE COLUMN `validation_regex` `validation_regex` VARCHAR(50) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `possible_values` `possible_values` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `groups` +CHANGE COLUMN `name` `name` VARCHAR(85) CHARACTER SET 'utf8mb4' NOT NULL ; + +ALTER TABLE `reminders` +CHANGE COLUMN `address` `address` TEXT CHARACTER SET 'utf8mb4' NOT NULL , +CHANGE COLUMN `message` `message` TEXT CHARACTER SET 'utf8mb4' NOT NULL ; + +ALTER TABLE `reservation_series` +CHANGE COLUMN `title` `title` VARCHAR(300) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `description` `description` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `reservation_types` +CHANGE COLUMN `label` `label` VARCHAR(85) CHARACTER SET 'utf8mb4' NOT NULL ; + +ALTER TABLE `resource_groups` +CHANGE COLUMN `resource_group_name` `resource_group_name` VARCHAR(75) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `resource_status_reasons` +CHANGE COLUMN `description` `description` VARCHAR(100) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `resource_types` +CHANGE COLUMN `resource_type_name` `resource_type_name` VARCHAR(75) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `resource_type_description` `resource_type_description` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `resources` +CHANGE COLUMN `name` `name` VARCHAR(85) CHARACTER SET 'utf8mb4' NOT NULL , +CHANGE COLUMN `location` `location` VARCHAR(255) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `contact_info` `contact_info` VARCHAR(255) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `description` `description` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `notes` `notes` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `additional_properties` `additional_properties` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `saved_reports` +CHANGE COLUMN `report_name` `report_name` VARCHAR(50) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `schedules` +CHANGE COLUMN `name` `name` VARCHAR(85) CHARACTER SET 'utf8mb4' NOT NULL , +CHANGE COLUMN `additional_properties` `additional_properties` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `terms_of_service` +CHANGE COLUMN `terms_text` `terms_text` TEXT CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `applicability` `applicability` VARCHAR(50) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `time_blocks` +CHANGE COLUMN `label` `label` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `end_label` `end_label` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `user_statuses` +CHANGE COLUMN `description` `description` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `users` +CHANGE COLUMN `fname` `fname` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `lname` `lname` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `username` `username` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `organization` `organization` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `position` `position` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , +CHANGE COLUMN `phone` `phone` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; From 7ce4847001ad65b9453400dcc9192b310ec76858 Mon Sep 17 00:00:00 2001 From: Gerd Katzenbeisser Date: Tue, 17 Sep 2024 05:37:16 +0000 Subject: [PATCH 4/4] Set utf8mb4 as default charset for all tables --- database_schema/upgrades/2.9/schema.sql | 60 +++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/database_schema/upgrades/2.9/schema.sql b/database_schema/upgrades/2.9/schema.sql index aeb31db39..77e179693 100644 --- a/database_schema/upgrades/2.9/schema.sql +++ b/database_schema/upgrades/2.9/schema.sql @@ -76,3 +76,63 @@ CHANGE COLUMN `username` `username` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEF CHANGE COLUMN `organization` `organization` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , CHANGE COLUMN `position` `position` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL , CHANGE COLUMN `phone` `phone` VARCHAR(85) CHARACTER SET 'utf8mb4' NULL DEFAULT NULL ; + +ALTER TABLE `accessories` DEFAULT CHARSET utf8mb4; +ALTER TABLE `account_activation` DEFAULT CHARSET utf8mb4; +ALTER TABLE `announcement_groups` DEFAULT CHARSET utf8mb4; +ALTER TABLE `announcement_resources` DEFAULT CHARSET utf8mb4; +ALTER TABLE `announcements` DEFAULT CHARSET utf8mb4; +ALTER TABLE `blackout_instances` DEFAULT CHARSET utf8mb4; +ALTER TABLE `blackout_series` DEFAULT CHARSET utf8mb4; +ALTER TABLE `blackout_series_resources` DEFAULT CHARSET utf8mb4; +ALTER TABLE `credit_log` DEFAULT CHARSET utf8mb4; +ALTER TABLE `custom_attribute_entities` DEFAULT CHARSET utf8mb4; +ALTER TABLE `custom_attribute_values` DEFAULT CHARSET utf8mb4; +ALTER TABLE `custom_attributes` DEFAULT CHARSET utf8mb4; +ALTER TABLE `custom_time_blocks` DEFAULT CHARSET utf8mb4; +ALTER TABLE `dbversion` DEFAULT CHARSET utf8mb4; +ALTER TABLE `group_resource_permissions` DEFAULT CHARSET utf8mb4; +ALTER TABLE `group_roles` DEFAULT CHARSET utf8mb4; +ALTER TABLE `groups` DEFAULT CHARSET utf8mb4; +ALTER TABLE `layouts` DEFAULT CHARSET utf8mb4; +ALTER TABLE `payment_configuration` DEFAULT CHARSET utf8mb4; +ALTER TABLE `payment_gateway_settings` DEFAULT CHARSET utf8mb4; +ALTER TABLE `payment_transaction_log` DEFAULT CHARSET utf8mb4; +ALTER TABLE `peak_times` DEFAULT CHARSET utf8mb4; +ALTER TABLE `pending_reservations` DEFAULT CHARSET utf8mb4; +ALTER TABLE `quotas` DEFAULT CHARSET utf8mb4; +ALTER TABLE `refund_transaction_log` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reminders` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_accessories` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_color_rules` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_files` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_guests` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_instances` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_reminders` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_resources` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_series` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_statuses` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_types` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_users` DEFAULT CHARSET utf8mb4; +ALTER TABLE `reservation_waitlist_requests` DEFAULT CHARSET utf8mb4; +ALTER TABLE `resource_accessories` DEFAULT CHARSET utf8mb4; +ALTER TABLE `resource_group_assignment` DEFAULT CHARSET utf8mb4; +ALTER TABLE `resource_groups` DEFAULT CHARSET utf8mb4; +ALTER TABLE `resource_images` DEFAULT CHARSET utf8mb4; +ALTER TABLE `resource_status_reasons` DEFAULT CHARSET utf8mb4; +ALTER TABLE `resource_type_assignment` DEFAULT CHARSET utf8mb4; +ALTER TABLE `resource_types` DEFAULT CHARSET utf8mb4; +ALTER TABLE `resources` DEFAULT CHARSET utf8mb4; +ALTER TABLE `roles` DEFAULT CHARSET utf8mb4; +ALTER TABLE `saved_reports` DEFAULT CHARSET utf8mb4; +ALTER TABLE `schedules` DEFAULT CHARSET utf8mb4; +ALTER TABLE `terms_of_service` DEFAULT CHARSET utf8mb4; +ALTER TABLE `time_blocks` DEFAULT CHARSET utf8mb4; +ALTER TABLE `user_email_preferences` DEFAULT CHARSET utf8mb4; +ALTER TABLE `user_groups` DEFAULT CHARSET utf8mb4; +ALTER TABLE `user_preferences` DEFAULT CHARSET utf8mb4; +ALTER TABLE `user_resource_permissions` DEFAULT CHARSET utf8mb4; +ALTER TABLE `user_session` DEFAULT CHARSET utf8mb4; +ALTER TABLE `user_statuses` DEFAULT CHARSET utf8mb4; +ALTER TABLE `users` DEFAULT CHARSET utf8mb4; +ALTER TABLE `users_customers` DEFAULT CHARSET utf8mb4; \ No newline at end of file