diff --git a/common/branch-mgr.c b/common/branch-mgr.c index cbd3318..2afe385 100644 --- a/common/branch-mgr.c +++ b/common/branch-mgr.c @@ -127,6 +127,8 @@ seaf_branch_manager_init (SeafBranchManager *mgr) static int open_db (SeafBranchManager *mgr) { + if (!mgr->seaf->create_tables) + return 0; #ifndef SEAFILE_SERVER char *db_path; diff --git a/common/seaf-utils.c b/common/seaf-utils.c index e59176e..b581cea 100644 --- a/common/seaf-utils.c +++ b/common/seaf-utils.c @@ -61,6 +61,7 @@ mysql_db_start (SeafileSession *session) char *host, *user, *passwd, *db, *unix_socket, *charset; int port; gboolean use_ssl = FALSE; + gboolean create_tables = TRUE; int max_connections = 0; GError *error = NULL; @@ -99,6 +100,12 @@ mysql_db_start (SeafileSession *session) use_ssl = g_key_file_get_boolean (session->config, "database", "use_ssl", NULL); + if (g_key_file_has_key (session->config, "database", "create_tables", NULL)) { + create_tables = g_key_file_get_boolean (session->config, + "database", "create_tables", NULL); + } + session->create_tables = create_tables; + charset = seaf_key_file_get_string (session->config, "database", "connection_charset", NULL); diff --git a/fuse/seafile-session.h b/fuse/seafile-session.h index 3cfb6e9..30f6802 100644 --- a/fuse/seafile-session.h +++ b/fuse/seafile-session.h @@ -34,6 +34,8 @@ struct _SeafileSession { SeafBranchManager *branch_mgr; SeafCommitManager *commit_mgr; SeafRepoManager *repo_mgr; + + gboolean create_tables; }; extern SeafileSession *seaf; diff --git a/server/gc/seafile-session.h b/server/gc/seafile-session.h index 59cf883..f154387 100644 --- a/server/gc/seafile-session.h +++ b/server/gc/seafile-session.h @@ -33,6 +33,7 @@ struct _SeafileSession { SeafRepoManager *repo_mgr; SeafCfgManager *cfg_mgr; + gboolean create_tables; }; extern SeafileSession *seaf; diff --git a/server/quota-mgr.c b/server/quota-mgr.c index 45030c1..c6fce0e 100644 --- a/server/quota-mgr.c +++ b/server/quota-mgr.c @@ -78,6 +78,10 @@ seaf_quota_manager_new (struct _SeafileSession *session) int seaf_quota_manager_init (SeafQuotaManager *mgr) { + + if (!mgr->session->create_tables) + return 0; + SeafDB *db = mgr->session->db; const char *sql; diff --git a/server/repo-mgr.c b/server/repo-mgr.c index d23841f..6fe6ae7 100644 --- a/server/repo-mgr.c +++ b/server/repo-mgr.c @@ -1356,6 +1356,9 @@ create_tables_pgsql (SeafRepoManager *mgr) static int create_db_tables_if_not_exist (SeafRepoManager *mgr) { + if (!mgr->seaf->create_tables) + return 0; + SeafDB *db = mgr->seaf->db; int db_type = seaf_db_type (db); diff --git a/server/seafile-session.c b/server/seafile-session.c index 2a1fc0c..d96bd49 100644 --- a/server/seafile-session.c +++ b/server/seafile-session.c @@ -192,17 +192,25 @@ seafile_session_init (SeafileSession *session) if (seaf_fs_manager_init (session->fs_mgr) < 0) return -1; - if (seaf_branch_manager_init (session->branch_mgr) < 0) + if (seaf_branch_manager_init (session->branch_mgr) < 0) { + seaf_warning ("Failed to init branch manager.\n"); return -1; + } - if (seaf_repo_manager_init (session->repo_mgr) < 0) + if (seaf_repo_manager_init (session->repo_mgr) < 0) { + seaf_warning ("Failed to init repo manager.\n"); return -1; + } - if (seaf_quota_manager_init (session->quota_mgr) < 0) + if (seaf_quota_manager_init (session->quota_mgr) < 0) { + seaf_warning ("Failed to init quota manager.\n"); return -1; + } - if (seaf_cfg_manager_init (session->cfg_mgr) < 0) + if (session->create_tables && seaf_cfg_manager_init (session->cfg_mgr) < 0) { + seaf_warning ("Failed to init config manager.\n"); return -1; + } seaf_mq_manager_init (session->mq_mgr); @@ -435,7 +443,7 @@ schedule_create_system_default_repo (SeafileSession *session) sql = "CREATE TABLE IF NOT EXISTS SystemInfo( " "info_key VARCHAR(256), info_value VARCHAR(1024))"; - if (seaf_db_query (session->db, sql) < 0) + if (session->create_tables && seaf_db_query (session->db, sql) < 0) return; ccnet_job_manager_schedule_job (session->job_mgr, diff --git a/server/seafile-session.h b/server/seafile-session.h index 2652fa4..59b3c77 100644 --- a/server/seafile-session.h +++ b/server/seafile-session.h @@ -91,6 +91,8 @@ struct _SeafileSession { HttpServerStruct *http_server; ZipDownloadMgr *zip_download_mgr; IndexBlksMgr *index_blocks_mgr; + + gboolean create_tables; }; extern SeafileSession *seaf; diff --git a/server/share-mgr.c b/server/share-mgr.c index dd69d35..5ca755b 100644 --- a/server/share-mgr.c +++ b/server/share-mgr.c @@ -25,6 +25,9 @@ seaf_share_manager_new (SeafileSession *seaf) int seaf_share_manager_start (SeafShareManager *mgr) { + if (!mgr->seaf->create_tables) + return 0; + SeafDB *db = mgr->seaf->db; const char *sql;