diff --git a/currency/currency.install b/currency/currency.install
index 9c6acc9..884089a 100644
--- a/currency/currency.install
+++ b/currency/currency.install
@@ -134,6 +134,100 @@ function currency_schema() {
 }
 
 /**
+ * Defines the schema for Currency 7.x-2.0.
+ *
+ * @see currency_update_7200()
+ */
+function currency_schema_7200() {
+  $schema['currency'] = array(
+    'description' => 'Currency information based on ISO 4127.',
+    'fields' => array(
+      'export_module' => array(
+        'type' => 'varchar',
+        'length' => 255,
+      ),
+      'export_type' => array(
+        'type' => 'int',
+        'length' => 'tiny',
+        'not null' => TRUE,
+      ),
+      'ISO4217Code' => array(
+        'type' => 'varchar',
+        'length' => 3,
+        'not null' => TRUE,
+      ),
+      'ISO4217Number' => array(
+        'type' => 'varchar',
+        'length' => 3,
+      ),
+      'rounding_step' => array(
+        'type' => 'int',
+      ),
+      'sign' => array(
+        'type' => 'varchar',
+        'length' => 255,
+      ),
+      'subunits' => array(
+        'type' => 'int',
+      ),
+      'title' => array(
+        'type' => 'varchar',
+        'length' => 255,
+      ),
+    ),
+    'primary key' => array('ISO4217Code'),
+    'indexes' => array(
+      'ISO4217Number' => array('ISO4217Number'),
+    ),
+  );
+  $schema['currency_locale_pattern'] = array(
+    'description' => 'Locale-specific amount formatting.',
+    'fields' => array(
+      'export_module' => array(
+        'type' => 'varchar',
+        'length' => 255,
+      ),
+      'export_type' => array(
+        'type' => 'int',
+        'length' => 'tiny',
+      ),
+      'locale' => array(
+        'not null' => TRUE,
+        'type' => 'varchar',
+        'length' => 255,
+      ),
+      'pattern' => array(
+        'type' => 'varchar',
+        'length' => 255,
+      ),
+    ),
+    'primary key' => array('locale'),
+  );
+  $schema['currency_exchanger_fixed_rates'] = array(
+    'fields' => array(
+      'currency_code_from' => array(
+        'type' => 'varchar',
+        'length' => 3,
+        'not null' => TRUE,
+      ),
+      'currency_code_to' => array(
+        'type' => 'varchar',
+        'length' => 3,
+        'not null' => TRUE,
+      ),
+      'rate' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+      ),
+    ),
+    'primary key' => array('currency_code_from', 'currency_code_to'),
+  );
+
+  return $schema;
+}
+
+/**
  * Implements hook_uninstall().
  */
 function currency_uninstall() {
@@ -159,6 +253,21 @@ function currency_requirements($phase) {
  * Sets all primary keys to not null.
  */
 function currency_update_7200(array &$sandbox) {
+  // An upgrade path from 7.x-1.x was not added until 7.x-2.5, so it had to be
+  // squeezed in here.
+  $schema_version = drupal_get_installed_schema_version('currency');
+  if ($schema_version < 7200 && $schema_version !== SCHEMA_UNINSTALLED) {
+    // Drop the 7.x-1.x table.
+    db_drop_table('currencyapi');
+
+    // Install 7.x-2.0 tables.
+    $schema = currency_schema_7200();
+    foreach ($schema as $name => $table) {
+      db_create_table($name, $table);
+    }
+  }
+
+  // Perform the original update.
   db_change_field('currency_locale_pattern', 'locale', 'locale', array(
     'not null' => TRUE,
     'length' => 5,
