diff options
-rw-r--r-- | sql/handler.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index 2f6e3b11bdf..1c50634de1f 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -837,8 +837,15 @@ int ha_create_table(const char *name, HA_CREATE_INFO *create_info, } error=table.file->create(name,&table,create_info); VOID(closefrm(&table)); - if (error) - my_error(ER_CANT_CREATE_TABLE,MYF(ME_BELL+ME_WAITTANG),name,my_errno); + if (error) { + if (table.db_type == DB_TYPE_INNOBASE) { + /* Creation of InnoDB table cannot fail because of an OS error: + put error as the number */ + my_error(ER_CANT_CREATE_TABLE,MYF(ME_BELL+ME_WAITTANG),name,error); + } else { + my_error(ER_CANT_CREATE_TABLE,MYF(ME_BELL+ME_WAITTANG),name,my_errno); + } + } DBUG_RETURN(error != 0); } |