diff --git a/src/database/mysql_common.c b/src/database/mysql_common.c index eb61f7c58eea28baf934595c91695eb21c30391e..3d7db2c8bacf07b0525b8bed16be35cf74033396 100644 --- a/src/database/mysql_common.c +++ b/src/database/mysql_common.c @@ -114,23 +114,15 @@ static int _mysql_make_table_current(MYSQL *mysql_db, char *table_name, return SLURM_SUCCESS; } -extern int *destroy_mysql_db_info(mysql_db_info_t *db_info) -{ - if(db_info) { - xfree(db_info->host); - xfree(db_info->user); - xfree(db_info->pass); - xfree(db_info); - } - return SLURM_SUCCESS; -} - -extern int mysql_create_db(MYSQL *mysql_db, char *db_name, - mysql_db_info_t *db_info) +static int _create_db(char *db_name, mysql_db_info_t *db_info) { char create_line[50]; + MYSQL *mysql_db = NULL; - slurm_mutex_lock(&mysql_lock); +// slurm_mutex_lock(&mysql_lock); + if(!(mysql_db = mysql_init(mysql_db))) + fatal("mysql_init failed: %s", mysql_error(mysql_db)); + if(mysql_real_connect(mysql_db, db_info->host, db_info->user, db_info->pass, NULL, db_info->port, NULL, 0)) { snprintf(create_line, sizeof(create_line), @@ -140,17 +132,30 @@ extern int mysql_create_db(MYSQL *mysql_db, char *db_name, mysql_errno(mysql_db), mysql_error(mysql_db), create_line); } + mysql_close(mysql_db); + mysql_server_end(); } else { info("Connection failed to host = %s " "user = %s pass = %s port = %u", db_info->host, db_info->user, db_info->pass, db_info->port); slurm_mutex_unlock(&mysql_lock); - fatal("mysql_real_connect failed: %d %s", + fatal("mysql_real_connect failed: %d %s\n", mysql_errno(mysql_db), mysql_error(mysql_db)); } - slurm_mutex_unlock(&mysql_lock); +// slurm_mutex_unlock(&mysql_lock); + return SLURM_SUCCESS; +} + +extern int *destroy_mysql_db_info(mysql_db_info_t *db_info) +{ + if(db_info) { + xfree(db_info->host); + xfree(db_info->user); + xfree(db_info->pass); + xfree(db_info); + } return SLURM_SUCCESS; } @@ -178,8 +183,7 @@ extern int mysql_get_db_connection(MYSQL **mysql_db, char *db_name, if(mysql_errno(*mysql_db) == ER_BAD_DB_ERROR) { debug("Database %s not created. " "Creating", db_name); - mysql_create_db(*mysql_db, db_name, - db_info); + _create_db(db_name, db_info); } else { fatal("mysql_real_connect failed: " "%d %s", diff --git a/src/database/mysql_common.h b/src/database/mysql_common.h index 2b5a6b777ef6d4fe1849bf14df5e60031f58e172..b34d0942c4bc0e7d4bf4c6e9480e4fbcb86d1aad 100644 --- a/src/database/mysql_common.h +++ b/src/database/mysql_common.h @@ -76,8 +76,7 @@ extern pthread_mutex_t mysql_lock; extern int *destroy_mysql_db_info(mysql_db_info_t *db_info); -extern int mysql_create_db(MYSQL *mysql_db, char *db_name, - mysql_db_info_t *db_info); +extern int mysql_create_db(char *db_name, mysql_db_info_t *db_info); extern int mysql_get_db_connection(MYSQL **mysql_db, char *db_name, mysql_db_info_t *db_info);