diff --git a/lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php b/lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php
index 993d20a1f42b008b2309b5af370aa5d347ff2672..f5db5af1907ffacaccda33639551826de21df776 100644
--- a/lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php
+++ b/lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php
@@ -89,6 +89,14 @@ class RemoveNamespacedAssets implements Visitor
      */
     public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
     {
+        // The table may already be deleted in a previous
+        // RemoveNamespacedAssets#acceptTable call. Removing Foreign keys that
+        // point to nowhere.
+        if ( ! $this->schema->hasTable($fkConstraint->getForeignTableName())) {
+            $localTable->removeForeignKey($fkConstraint->getName());
+            return;
+        }
+
         $foreignTable = $this->schema->getTable($fkConstraint->getForeignTableName());
         if ( ! $foreignTable->isInDefaultNamespace($this->schema->getName()) ) {
             $localTable->removeForeignKey($fkConstraint->getName());
diff --git a/tests/Doctrine/Tests/DBAL/Schema/Visitor/RemoveNamespacedAssetsTest.php b/tests/Doctrine/Tests/DBAL/Schema/Visitor/RemoveNamespacedAssetsTest.php
index b7c849c8e572a1e927626a6ba3fba36f4104e117..e5b660f6b654393b6a16d52e26f290bc575b85e4 100644
--- a/tests/Doctrine/Tests/DBAL/Schema/Visitor/RemoveNamespacedAssetsTest.php
+++ b/tests/Doctrine/Tests/DBAL/Schema/Visitor/RemoveNamespacedAssetsTest.php
@@ -37,6 +37,29 @@ class RemoveNamespacedAssetsTest extends \PHPUnit_Framework_TestCase
         $config->setName("test");
         $schema = new Schema(array(), array(), $config);
 
+        $fooTable = $schema->createTable("foo.bar");
+        $fooTable->addColumn('id', 'integer');
+
+        $testTable = $schema->createTable("test.test");
+        $testTable->addColumn('id', 'integer');
+
+        $testTable->addForeignKeyConstraint("foo.bar", array("id"), array("id"));
+
+        $schema->visit(new RemoveNamespacedAssets());
+
+        $sql = $schema->toSql(new MySqlPlatform());
+        $this->assertEquals(1, count($sql), "Just one CREATE TABLE statement, no foreign key and table to foo.bar");
+    }
+
+    /**
+     * @group DBAL-204
+     */
+    public function testCleanupForeignKeysDifferentOrder()
+    {
+        $config = new SchemaConfig;
+        $config->setName("test");
+        $schema = new Schema(array(), array(), $config);
+
         $testTable = $schema->createTable("test.test");
         $testTable->addColumn('id', 'integer');