diff --git a/CHANGELOG.md b/CHANGELOG.md index 81fde4435..19f3eccef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ - Fix database initialization if db_prefix is a schema prefix (#8221) - Fix undefined constant error in Installer on Windows (#8258) - Fix Makefile on Linux (#8211) +- Fix installation/upgrade on MySQL 5.5 - Index column size too large (#8231) ## Release 1.5.0 diff --git a/INSTALL b/INSTALL index 1837e1f9c..9bd4a3d1e 100644 --- a/INSTALL +++ b/INSTALL @@ -105,17 +105,19 @@ roundcube user. Here is an example of that procedure: > GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost; > quit -# mysql roundcubemail < SQL/mysql.initial.sql - Note 1: 'password' is the master password for the roundcube user. It is strongly recommended you replace this with a more secure password. Please keep in -mind: You need to specify this password later in 'config/db.inc.php'. +mind that you must specify this password later in 'config/config.inc.php'. Note 2: When using MySQL < 5.7.7 or MariaDB < 10.2.2 it is required to configure the database engine with: - innodb_large_prefix=true + innodb_large_prefix=1 + innodb_file_per_table=1 innodb_file_format=Barracuda +Now you can run the Installer or configure the database access options in +'config/config.inc.php' and run: `bin/initdb.sh --dir=SQL`. + * SQLite -------- @@ -133,11 +135,13 @@ which ever is the database superuser): $ createuser -P roundcube $ createdb -O roundcube -E UNICODE roundcubemail -$ psql -U roundcube -f SQL/postgres.initial.sql roundcubemail Note: in some system configurations you might need to add '-U postgres' to createuser and createdb commands. +Now you can run the Installer or configure the database access options in +'config/config.inc.php' and run: `bin/initdb.sh --dir=SQL`. + * Microsoft SQL Server ---------------------- diff --git a/SQL/mysql.initial.sql b/SQL/mysql.initial.sql index 8958cb244..27b322caa 100644 --- a/SQL/mysql.initial.sql +++ b/SQL/mysql.initial.sql @@ -1,7 +1,7 @@ -- Roundcube Webmail initial database structure -/*!40014 SET FOREIGN_KEY_CHECKS=0 */; +SET FOREIGN_KEY_CHECKS=0; -- Table structure for table `session` @@ -12,7 +12,7 @@ CREATE TABLE `session` ( `vars` mediumtext NOT NULL, PRIMARY KEY(`sess_id`), INDEX `changed_index` (`changed`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `users` @@ -29,7 +29,7 @@ CREATE TABLE `users` ( `preferences` longtext, PRIMARY KEY(`user_id`), UNIQUE `username` (`username`, `mail_host`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `cache` @@ -43,7 +43,7 @@ CREATE TABLE `cache` ( CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `expires_index` (`expires`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `cache_shared` @@ -54,7 +54,7 @@ CREATE TABLE `cache_shared` ( `data` longtext NOT NULL, PRIMARY KEY (`cache_key`), INDEX `expires_index` (`expires`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `cache_index` @@ -69,7 +69,7 @@ CREATE TABLE `cache_index` ( REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `expires_index` (`expires`), PRIMARY KEY (`user_id`, `mailbox`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `cache_thread` @@ -83,7 +83,7 @@ CREATE TABLE `cache_thread` ( REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `expires_index` (`expires`), PRIMARY KEY (`user_id`, `mailbox`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `cache_messages` @@ -99,7 +99,7 @@ CREATE TABLE `cache_messages` ( REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `expires_index` (`expires`), PRIMARY KEY (`user_id`, `mailbox`, `uid`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `collected_addresses` @@ -115,7 +115,7 @@ CREATE TABLE `collected_addresses` ( CONSTRAINT `user_id_fk_collected_addresses` FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE INDEX `user_email_collected_addresses_index` (`user_id`, `type`, `email`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `contacts` @@ -135,7 +135,7 @@ CREATE TABLE `contacts` ( CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `user_contacts_index` (`user_id`,`del`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `contactgroups` @@ -150,7 +150,7 @@ CREATE TABLE `contactgroups` ( CONSTRAINT `user_id_fk_contactgroups` FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `contactgroups_user_index` (`user_id`,`del`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `contactgroupmembers` @@ -165,7 +165,7 @@ CREATE TABLE `contactgroupmembers` ( CONSTRAINT `contact_id_fk_contacts` FOREIGN KEY (`contact_id`) REFERENCES `contacts`(`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `contactgroupmembers_contact_index` (`contact_id`) -) /*!40000 ENGINE=INNODB */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB; -- Table structure for table `identities` @@ -188,7 +188,7 @@ CREATE TABLE `identities` ( REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `user_identities_index` (`user_id`, `del`), INDEX `email_identities_index` (`email`, `del`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `responses` @@ -205,7 +205,7 @@ CREATE TABLE `responses` ( CONSTRAINT `user_id_fk_responses` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `user_responses_index` (`user_id`, `del`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `dictionary` @@ -218,7 +218,7 @@ CREATE TABLE `dictionary` ( CONSTRAINT `user_id_fk_dictionary` FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE `uniqueness` (`user_id`, `language`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `searches` @@ -233,7 +233,7 @@ CREATE TABLE `searches` ( CONSTRAINT `user_id_fk_searches` FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE `uniqueness` (`user_id`, `type`, `name`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `filestore` @@ -248,7 +248,7 @@ CREATE TABLE `filestore` ( CONSTRAINT `user_id_fk_filestore` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE `uniqueness` (`user_id`, `context`, `filename`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table structure for table `system` @@ -256,8 +256,8 @@ CREATE TABLE `system` ( `name` varchar(64) NOT NULL, `value` mediumtext, PRIMARY KEY(`name`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -/*!40014 SET FOREIGN_KEY_CHECKS=1 */; +SET FOREIGN_KEY_CHECKS=1; INSERT INTO `system` (`name`, `value`) VALUES ('roundcube-version', '2021100300'); diff --git a/SQL/mysql/2020020101.sql b/SQL/mysql/2020020101.sql index 5c002f11a..0a0402ba5 100644 --- a/SQL/mysql/2020020101.sql +++ b/SQL/mysql/2020020101.sql @@ -19,6 +19,7 @@ ALTER TABLE `cache_thread` ROW_FORMAT=DYNAMIC; ALTER TABLE `cache_messages` ROW_FORMAT=DYNAMIC; ALTER TABLE `contacts` ROW_FORMAT=DYNAMIC; ALTER TABLE `contactgroups` ROW_FORMAT=DYNAMIC; +ALTER TABLE `contactgroupmembers` ROW_FORMAT=DYNAMIC; ALTER TABLE `identities` ROW_FORMAT=DYNAMIC; ALTER TABLE `dictionary` ROW_FORMAT=DYNAMIC; ALTER TABLE `searches` ROW_FORMAT=DYNAMIC; diff --git a/SQL/mysql/2020091000.sql b/SQL/mysql/2020091000.sql index cc91fe0f2..aa098e35d 100644 --- a/SQL/mysql/2020091000.sql +++ b/SQL/mysql/2020091000.sql @@ -9,4 +9,4 @@ CREATE TABLE `collected_addresses` ( CONSTRAINT `user_id_fk_collected_addresses` FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE INDEX `user_email_collected_addresses_index` (`user_id`, `type`, `email`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/SQL/mysql/2021081000.sql b/SQL/mysql/2021081000.sql index 17842b632..19068d197 100644 --- a/SQL/mysql/2021081000.sql +++ b/SQL/mysql/2021081000.sql @@ -10,4 +10,4 @@ CREATE TABLE `responses` ( CONSTRAINT `user_id_fk_responses` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, INDEX `user_responses_index` (`user_id`, `del`) -) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */; +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/UPGRADING b/UPGRADING index 4719dbbe7..229ac0bd6 100644 --- a/UPGRADING +++ b/UPGRADING @@ -24,7 +24,8 @@ WARNING: Make sure files have proper owner/group for your setup. If you use tar to extract the package, `--no-same-owner` option might be helpful. WARNING: See Post-Upgrade Activities section below. WARNING: If you use MySQL < 5.7.7 or MariaDB < 10.2.2 make sure to configure it with: - innodb_large_prefix=true + innodb_large_prefix=1 + innodb_file_per_table=1 innodb_file_format=Barracuda