8.5.x schema.inc drupal_uninstall_schema($module)
8.0.x schema.inc drupal_uninstall_schema($module)
8.1.x schema.inc drupal_uninstall_schema($module)
8.2.x schema.inc drupal_uninstall_schema($module)
8.3.x schema.inc drupal_uninstall_schema($module)
8.4.x schema.inc drupal_uninstall_schema($module)
8.6.x schema.inc drupal_uninstall_schema($module)
6.x common.inc drupal_uninstall_schema($module)
7.x common.inc drupal_uninstall_schema($module)

Removes all tables defined in a module's hook_schema().

Note: This function does not pass the module's schema through hook_schema_alter(). The module's tables will be created exactly as the module defines them.


$module: The module for which the tables will be removed.

Return value

An array of arrays with the following key/value pairs:

  • success: a boolean indicating whether the query succeeded.
  • query: the SQL query(s) executed, passed through check_plain().

Related topics

1 call to drupal_uninstall_schema()
drupal_uninstall_modules in includes/install.inc
Uninstalls a given list of disabled modules.


includes/common.inc, line 7142
Common functions that many Drupal modules will need to reference.


function drupal_uninstall_schema($module) {
  $schema = drupal_get_schema_unprocessed($module);
  _drupal_schema_initialize($schema, $module, FALSE);
  foreach ($schema as $table) {
    if (db_table_exists($table['name'])) {


ywarnier’s picture

As of Drupal 7, a call to drupal_uninstall_schema() is no longer necessary. See http://drupal.org/update/modules/6/7: "A module no longer should explicitly install or uninstall its database schema in hook_install() or hook_uninstall()."

letsbuild’s picture

I know it says this is no longer needed in drupal 7 but my tables wouldn't get dropped on uninstall alone. I had to include this function in my uninstall hook to get it to work

birud’s picture

My schema was also present even after uninstalling the module.

knibals’s picture