Plesk

Migration failed: The used table type doesn’t support FULLTEXT indexes

Symptoms

A migration to Plesk server fails with the following error:

Failed to copy content of database 'example_db'
ERROR 1214 (HY000) at line 2956: The used table type doesn't support FULLTEXT indexes

Cause

The target Plesk server has MariaDB 5.5 installed using InnoDB engine which does not support FULLTEXT search function.

Resolution

Apply one of the following resolutions:

  • Upgrade to Mariadb 5.6 or above:

    How to upgrade MySQL 5.5 to 5.6/5.7 or MariaDB 5.5 to 10.x on Linux?

  • Change engine for tables using FULLTEXT search in database on source server

    1. Connect to the target server using SSH

    2. Open the dump of database mentioned in the error message, for example /usr/local/psa/var/modules/panel-migrator/sessions/20171108065711/target-server/db-dumps/example_db.sql and find all affected tables by searching for FULLTEXT. Note the names of tables.

    3. Connect to the source server using SSH

    4. Create a backup of the database:

      # plesk db dump example_db > example_db.sql

    5. Access Plesk database

    6. Change the engine to MyISAM for tables found in step 2:

      # plesk db
      mysql> use example_db
      ALTER TABLE table1 ENGINE = MYISAM;
      ALTER TABLE table2 ENGINE = MYISAM;

  • Modify database dump and migrate manually on source server without Plesk

    1. Create a dump of the affected database on the source server

    2. Download it to a local machine or upload it to the related domain on the target server

    3. Open the dump file and find all tables which contain word "FULLTEXT", for example:

      CREATE TABLE `example.table` (
      `ex` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `ex2` int(10) unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`),
      UNIQUE KEY `license_type_id` (`license_type_id`,`pkg_id`),
      FULLTEXT KEY `pkg_id` (`pkg_id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    4. Replace ENGINE=InnoDB with ENGINE=MYISAM for all tables found in step 3.:

      CREATE TABLE `example.table` (
      `ex` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `ex2` int(10) unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`),
      UNIQUE KEY `license_type_id` (`license_type_id`,`pkg_id`),
      FULLTEXT KEY `pkg_id` (`pkg_id`)
      ) ENGINE=MYISAM DEFAULT CHARSET=utf8;

    5. Create the database in the target Plesk server with the same database-name and database-user as the source database

    6. Import modified dump of the database on the target server

    7. Re-sync the subscription without option Re-sync database data

Exit mobile version