diff --git a/net/server/group-mgr.c b/net/server/group-mgr.c index 207c667..e08588a 100644 --- a/net/server/group-mgr.c +++ b/net/server/group-mgr.c @@ -90,7 +90,7 @@ open_db (CcnetGroupManager *manager) return -1; manager->priv->db = db; - if ((manager->session->create_tables || ccnet_db_type(db) != CCNET_DB_TYPE_MYSQL) + if ((manager->session->create_tables || ccnet_db_type(db) == CCNET_DB_TYPE_PGSQL) && check_db_table (manager, db) < 0) { ccnet_warning ("Failed to create group db tables.\n"); return -1; diff --git a/net/server/org-mgr.c b/net/server/org-mgr.c index 25ae951..ead5413 100644 --- a/net/server/org-mgr.c +++ b/net/server/org-mgr.c @@ -75,7 +75,7 @@ open_db (CcnetOrgManager *manager) return -1; manager->priv->db = db; - if ((manager->session->create_tables || ccnet_db_type(db) != CCNET_DB_TYPE_MYSQL) + if ((manager->session->create_tables || ccnet_db_type(db) == CCNET_DB_TYPE_PGSQL) && check_db_table (db) < 0) { ccnet_warning ("Failed to create org db tables.\n"); return -1; diff --git a/net/server/server-session.c b/net/server/server-session.c index bc97021..7d415dc 100644 --- a/net/server/server-session.c +++ b/net/server/server-session.c @@ -131,7 +131,6 @@ static int init_mysql_database (CcnetSession *session) char *host, *user, *passwd, *db, *unix_socket, *charset; int port; gboolean use_ssl = FALSE; - gboolean create_tables = TRUE; int max_connections = 0; host = ccnet_key_file_get_string (session->keyf, "Database", "HOST"); @@ -167,10 +166,6 @@ static int init_mysql_database (CcnetSession *session) "Database", "UNIX_SOCKET"); use_ssl = g_key_file_get_boolean (session->keyf, "Database", "USE_SSL", NULL); - if (g_key_file_has_key (session->keyf, "Database", "CREATE_TABLES", NULL)) - create_tables = g_key_file_get_boolean (session->keyf, "Database", "CREATE_TABLES", NULL); - session->create_tables = create_tables; - charset = ccnet_key_file_get_string (session->keyf, "Database", "CONNECTION_CHARSET"); @@ -255,6 +250,7 @@ load_database_config (CcnetSession *session) { int ret; char *engine; + gboolean create_tables = FALSE; engine = ccnet_key_file_get_string (session->keyf, "Database", "ENGINE"); if (!engine || strncasecmp (engine, DB_SQLITE, sizeof(DB_SQLITE)) == 0) { @@ -277,6 +273,11 @@ load_database_config (CcnetSession *session) ccnet_warning ("Unknown database type: %s.\n", engine); ret = -1; } + if (ret == 0) { + if (g_key_file_has_key (session->keyf, "Database", "CREATE_TABLES", NULL)) + create_tables = g_key_file_get_boolean (session->keyf, "Database", "CREATE_TABLES", NULL); + session->create_tables = create_tables; + } return ret; } diff --git a/net/server/user-mgr.c b/net/server/user-mgr.c index 5cefa86..17e2f89 100644 --- a/net/server/user-mgr.c +++ b/net/server/user-mgr.c @@ -764,7 +764,7 @@ open_db (CcnetUserManager *manager) return -1; manager->priv->db = db; - if ((manager->session->create_tables || ccnet_db_type(db) != CCNET_DB_TYPE_MYSQL) + if ((manager->session->create_tables || ccnet_db_type(db) == CCNET_DB_TYPE_PGSQL) && check_db_table (db) < 0) { ccnet_warning ("Failed to create user db tables.\n"); return -1;