**Describe what's wrong**
inconsistent behavior 

```sql
SHOW CREATE DATABASE information_schema
```
returns the following SQL statement

```sql
CREATE DATABASE information_schema
ENGINE = Memory()
```

but when you try to run these queries
```sql
 DROP DATABASE information_schema;
 CREATE DATABASE information_schema
ENGINE = Memory()
```

It returns

> Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: Database engine `Memory` cannot have arguments. (BAD_ARGUMENTS)


**Does it reproduce on recent release?**
reproduced any version from 21.11+


table->is_dropped = true;
    create_queries.erase(table_name);
    UUID table_uuid = table->getStorageID().uuid;
    if (table_uuid != UUIDHelpers::Nil)
        DatabaseCatalog::instance().removeUUIDMappingFinally(table_uuid);
}
ASTPtr DatabaseMemory::getCreateDatabaseQuery() const
{
    auto create_query = std::make_shared<ASTCreateQuery>();
    create_query->setDatabase(getDatabaseName());
    create_query->set(create_query->storage, std::make_shared<ASTStorage>());
    create_query->storage->set(create_query->storage->engine, makeASTFunction(getEngineName()));
    if (const auto comment_value = getDatabaseComment(); !comment_value.empty())
        create_query->set(create_query->comment, std::make_shared<ASTLiteral>(comment_value));
    return create_query;
}
ASTPtr DatabaseMemory::getCreateTableQueryImpl(const String & table_name, ContextPtr, bool throw_on_error) const
{
    std::lock_guard lock{mutex};
    auto it = create_queries.find(table_name);
    if (it == create_queries.end() || !it->second)
    {
        if (throw_on_error)
            throw Exception(ErrorCodes::UNKNOWN_TABLE, "There is no metadata of table {} in database {}", table_name, database_name);
        else
            return {};
    }
    return it->second->clone();
}
UUID DatabaseMemory::tryGetTableUUID(const String & table_name) const