diff --git a/src/Databases/DatabaseFactory.cpp b/src/Databases/DatabaseFactory.cpp index b4a5537a192..f3c2d6a609f 100644 --- a/src/Databases/DatabaseFactory.cpp +++ b/src/Databases/DatabaseFactory.cpp @@ -36,16 +36,18 @@ namespace ErrorCodes DatabasePtr DatabaseFactory::get( const String & database_name, const String & metadata_path, const ASTStorage * engine_define, Context & context) { + bool create = false; + try { - Poco::File(metadata_path).createDirectory(); + create = Poco::File(metadata_path).createDirectory(); return getImpl(database_name, metadata_path, engine_define, context); } catch (...) { Poco::File metadata_dir(metadata_path); - if (metadata_dir.exists()) + if (create && metadata_dir.exists()) metadata_dir.remove(true); throw;