Last updated March 19, 2013. Created by LeeHunter on July 8, 2007.
Edited by chrisjlee, paulmckibben, a.ross, add1sun. Log in to edit this page.

If you need to manually disable a module you can do so in the database. Before you start, do a mysqldump (or export) of your Drupal db to a local file in case things go wrong and you need to roll back.

Accessing MySQL

In order to perform these commands one must have access and proper permissions to execute MySQL commands. These commands can be executed with GUI like phpMyAdmin, or just the MySQL command line interface.

phpMyAdmin

To disable a module via phpMyAdmin you must login to phpMyAdmin. Then you must locate the database where Drupal is installed. Once you have done so look for the "system" table. Click and open it. Click to browse the table. Find the record for the module that is causing the problems and select the edit function. Set the status to "0" and save.

MySQL command line

To disable a module using the MySQL command line, run the following SELECT to look at the state of your data before the change. This will help you to find the full name of the module too.

MySQL Commands

See all the modules enabled:
SELECT name,status FROM system WHERE type='module';

See if a particular module is enabled:
SELECT name,status FROM system WHERE name='module_name';

Disable your module, set the status to 0 for the module name that you want to disable.
UPDATE system SET status='0' WHERE name='module_name';

Enable your module:
UPDATE system SET status='1' WHERE name='module_name';

Check your handiwork using the SELECT statement again.

Drupal 7: Clear Cached System List

On Drupal 7, you must still follow the procedure above to disable the module in the system table. However, data from the system table is cached. This means that even though you updated the system table, Drupal may still think the module is enabled because its cached copy of the system table is not up-to-date.

The cached copy of the system list is in the cache_bootstrap table. Clear the cached copy of the system list as follows.

phpMyAdmin

If you are using phpMyAdmin, find the "cache_bootstrap" table, and delete the record with cid="system_list".

MySQL Command Line

To update the cache using the mysql command line, type:
DELETE FROM cache_bootstrap WHERE cid='system_list'

Looking for support? Visit the Drupal.org forums, or join #drupal-support in IRC.

Comments

What are the steps to do this in a postgresql environment?

I disabled my broken module in 6.x with replace the .module file to blank file. After this, I disabled it on /admin/build/modules page.

In Drupal 7, it was not sufficient for me to merely set status=0 in the system table. I also had to do the following:

DELETE FROM cache_bootstrap WHERE cid='system_list'

Without doing this, Drupal would still think the module was enabled.

Paul McKibben | Mediacurrent

I've added the above info to this page.

Paul McKibben | Mediacurrent

Use something like this:

UPDATE `system` SET `status`='0' WHERE `filename` LIKE '%sites/all%' AND `type ='module' AND `status` ='1';

replaces 'sites/all' with the path to your contrib/site modules folder.

Kester Featherbelly
www.komoko.co.uk

UPDATE databasename.system SET status=0, throttle=-1 WHERE
(filename LIKE 'sites/all/modules%' ) AND status=1 AND type='module'

replace the database name with your own dbase name.
thanks to stanford.edu

That worked, thanks

The core module "update manager" somehow got disabled on a drupal site I was working on and the checkbox was grayed out, so I could not check it. So I went trough the steps mentioned above. I did it manually with phpMyAdmin - the name field in the system table was simply called "update". I set the status to 1 and then deleted the "system_list"record in "cache_bootstrap".

The update manager was working again. But when I looked under modules, I mentioned the red text saying "disabled". The checkbox was checked and it was clearly working.

This is not a big problem, but somehow disturbing me. Does anyone know how to fix it?

SELECT name,status FROM system WHERE type='module' AND status='1';

Disable your module, set the status to 0 for the module name that you want to disable.
Set schema_version to -1 to uninstall a module so that it will not appear on admin/modules/uninstall page
UPDATE system SET status='0', schema_version='-1' WHERE name='module_name';

akki