4

I have already deleted a migrate class in the .inc file and also deleted it in the .install file but i still get an error saying:

Class ForumTermMigration no longer exists
Class ForumUserMigration no longer exists

whenever i access the migrate UI in drupal site.

how to fix this?

<?php

/**
 * @file
 * Set up the move2drupal module module.
 */

function move2drupal_enable() {
  //Migration::registerMigration('ForumTermMigration');
  //Migration::registerMigration('ForumUserMigration');
  Migration::registerMigration('ForumNodeMigration');
  Migration::registerMigration('ForumCommentMigration');
  }

function move2drupal_uninstall() {
  // 
}

function move2drupal_disable() {
  //Migration::deregisterMigration('ForumTermMigration');
  //Migration::deregisterMigration('ForumUserMigration');
  Migration::deregisterMigration('ForumNodeMigration');
  Migration::deregisterMigration('ForumCommentMigration');
}

the above is my .install file. see ive commented the class i deleted in the .inc file.

I have also tried clearing the cache. uninstalling the module and reinstalling it again.

  • First thing: clear cache. Administer -> Configuration -> Performance. – Alfred Armstrong Apr 3 '13 at 17:21
  • done that already many times. – Belmark Caday Apr 3 '13 at 17:22
  • Can you uninstall migrate itself? Might be the simplest way to clear the data from wherever it's put it. – Alfred Armstrong Apr 3 '13 at 17:26
  • If I remember correctly it was in the migrate_status table, so you will have to delete it manually from MySQL. (However I am not entirely sure) – Neograph734 Apr 3 '13 at 17:46
4

I'm currently using Drupal 7.22.

For my migration class, in my migrate_mypages.install file I have:

function migrate_mypages_enable() {
  Migration::registerMigration('MyPagesMigration');
}

function migrate_mypages_disable() {
  Migration::deregisterMigration('MyPages');
}

I haven't looked into the actual Migrate module, but it seems that when registering a migration in code, you have to use the full class name, whereas when de-registering the migration in code, you use only the name of your migration (machine-name).

If you are stuck with old classes, you can either add the de-register lines back in, and enable/disable your module, or, manually clear the class lines out of the table "migrate_status" in your database (as per Neograph734's comment).

As well, if you use drush, there is also:

drush migrate-deregister --orphans
  • 1
    If you're going to use drush as a quick fix anyway, you could also run the more targeted drush php-eval "Migration::deregisterMigration('CLASSNAME');" as that will only remove the classes you specify and not try to do anything more clever! – J-P Feb 4 '14 at 12:33
1

You can use Drush for achieving this: Use drush migrate-deregister --orphans.

  • 1
    Super helpful! Also, the configuration admin page will list any orphaned migrations and provides a button to deregister them when they exist (admin/content/migrate/configure). – Joshua Stewardson Oct 1 '15 at 18:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.