diff --git a/inc/lektor/common.h b/inc/lektor/common.h
index d025b87ddb83af9302cfb2b18daafccd867c6782..ec7da1881eff890576009b02b32af5738631f201 100644
--- a/inc/lektor/common.h
+++ b/inc/lektor/common.h
@@ -18,8 +18,8 @@
 #define LKT_DATABASE_NAME_KID           "id"
 #define LKT_DATABASE_NAME_KNAME         "source_name"
 #define LKT_DATABASE_NAME_KTITLE        "song_title"
-#define LKT_DATABASE_NAME_KCAT          "song_type"
-#define LKT_DATABASE_NAME_KTYPE         "category"
+#define LKT_DATABASE_NAME_KCAT          "category"
+#define LKT_DATABASE_NAME_KTYPE         "song_type"
 #define LKT_DATABASE_NAME_KAUTHOR       "author_name"
 #define LKT_DATABASE_NAME_KAUTHOR_YEAR  "author_year"
 #define LKT_DATABASE_NAME_KLANG         "language"
diff --git a/inc/lektor/database.h b/inc/lektor/database.h
index ed5a5fae6a4423599eca367ba714c44db574a076..38349136e3b336a338748d9dcb583f4ec6335430 100644
--- a/inc/lektor/database.h
+++ b/inc/lektor/database.h
@@ -24,6 +24,7 @@ struct lkt_queue_state {
 
 /* Open correctly a database for lektor. */
 bool database_new   (sqlite3 **db);
+bool database_init  (const char *dbpath);
 bool database_open  (sqlite3 *db, const char *dbpath);
 bool database_attach(sqlite3 *db, const char *name, const char *dbpath);
 bool database_detach(sqlite3 *db, const char *name);
diff --git a/meson.build b/meson.build
index a66ecdeb6b38a614941cfa7559d2bb005c210640..a41bd3414023901a1ddadb6df2ee3cca52e391a8 100644
--- a/meson.build
+++ b/meson.build
@@ -14,9 +14,9 @@ project( 'lektor'
        )
 
 libdl   = meson.get_compiler('c').find_library('dl')
-dep_x11 = dependency('x11', required : false)
-dep_mpv = dependency('mpv', required : false)
-dep_sdl = dependency('sdl2', required : false)
+dep_x11 = dependency('x11',  required: false)
+dep_mpv = dependency('mpv',  required: false)
+dep_sdl = dependency('sdl2', required: false)
 
 ## Get architecture
 archi = run_command('uname', '-p').stdout().strip()
@@ -26,8 +26,8 @@ endif
 if archi == 'unknown'
   archi = run_command('arch').stdout().strip()
 endif
-add_global_arguments('-D' + archi + '_ARCH', language : 'c')
-add_global_arguments('-D_REENTRANT', language : 'c')
+add_global_arguments('-D' + archi + '_ARCH', language: 'c')
+add_global_arguments('-D_REENTRANT', language: 'c')
 
 ## Sources for mthread
 mthread_sources = [ 'src/mthread/mthread.c'
@@ -68,78 +68,81 @@ core_sources =  [ 'src/mkv/bufferfd.c'
 includes = include_directories('inc')
 
 # Server
-core_deps = [ dependency('sqlite3', version : '>= 3.31.0')
+core_deps = [ dependency('sqlite3', version: '>= 3.31.0')
             , dependency('libcurl')
             , dependency('json-c')
-            , dependency('threads', required : true)
+            , dependency('threads', required: true)
             ]
 
 common_deps = [ declare_dependency( link_with: static_library( 'common'
                                                              , files('src/common.c')
-                                                             , include_directories : includes )
+                                                             , include_directories: includes )
                                   , include_directories: includes ) ]
 
 mthread_deps = [ declare_dependency( link_with: static_library( 'mthread'
                                                               , files(mthread_sources)
-                                                              , include_directories : includes )
+                                                              , include_directories: includes )
                                    , include_directories: includes
-                                   , dependencies : [ common_deps ] ) ]
+                                   , dependencies: [ common_deps ] ) ]
+
+initsql_deps = [ declare_dependency( link_with: static_library( 'initsql'
+                                                              , [ custom_target('init.c'
+                                                                               , output: 'sql_init.c'
+                                                                               , input: 'scripts/init.sql'
+                                                                               , command: [find_program('xxd'), '-i', '@INPUT@', '@OUTPUT@']) ] ) ) ]
 
 lib = static_library( meson.project_name()
                     , files(core_sources)
-                    , include_directories : includes
-                    , dependencies : [ core_deps, libdl, common_deps, mthread_deps ]
+                    , include_directories: includes
+                    , dependencies: [ core_deps, libdl, common_deps, mthread_deps, initsql_deps ]
                     )
 
 bin_deps = [ declare_dependency( link_with: lib, include_directories: includes) ]
 
 srv = executable( meson.project_name() + 'd'
                 , files('src/main/server.c')
-                , include_directories : includes
-                , dependencies : [ bin_deps ]
-                , install : true
+                , include_directories: includes
+                , dependencies: [ bin_deps ]
+                , install: true
                 )
 
 # Admin executable
 metadata = executable( 'lktadm'
                      , files('src/main/lktadm.c', 'src/cmd.c')
                      , include_directories : includes
-                     , dependencies : [ bin_deps ]
-                     , install : true
+                     , dependencies: [ bin_deps ]
+                     , install: true
                      )
 
 # Client executable
 lkt = executable( 'lkt'
                 , files('src/main/lkt.c', 'src/cmd.c', 'src/common.c')
-                , include_directories : includes
-                , install : true
-                )
+                , include_directories: includes
+                , install: true )
 
 # X11 window module
 if dep_x11.found() and dep_mpv.found()
   lib_mod_x11 = shared_library ( '_module_x11'
                                , files(['src/module/module_x11.c', 'src/module/mpv.c'])
-                               , include_directories : includes
-                               , dependencies : [ dep_x11, dep_mpv ]
-                               , link_with : lib
-                               , install : true
-                               , install_dir : 'lib/lektor'
-                               )
+                               , include_directories: includes
+                               , dependencies: [ dep_x11, dep_mpv ]
+                               , link_with: lib
+                               , install: true
+                               , install_dir: 'lib/lektor' )
 endif
 
 # SQL2 window module
 if dep_sdl.found() and dep_mpv.found()
   lib_mod_sdl = shared_library ( '_module_sdl2'
                                , files(['src/module/module_sdl2.c', 'src/module/mpv.c'])
-                               , include_directories : includes
-                               , dependencies : [ dep_sdl, dep_mpv ]
-                               , link_with : lib
-                               , install : true
-                               , install_dir : 'lib/lektor'
-                               )
+                               , include_directories: includes
+                               , dependencies: [ dep_sdl, dep_mpv ]
+                               , link_with: lib
+                               , install: true
+                               , install_dir: 'lib/lektor' )
 endif
 
 # Install
-install_data('scripts/init.sql', install_dir : 'share/lektor')
+install_data('scripts/init.sql', install_dir: 'share/lektor')
 install_man('doc/lektord.1')
 meson.add_install_script('scripts/install.sh')
diff --git a/scripts/init.sql b/scripts/init.sql
index 5ef96a0b6b56f9fd7cf6bc1a30f68e0076988237..c7ae6a94c92a20c854a14fb823a52a60583f7523 100644
--- a/scripts/init.sql
+++ b/scripts/init.sql
@@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS kara
   , author_year INTEGER CHECK(author_year > 0)
   , available   INTEGER CHECK(available = 0 OR available = 1) DEFAULT 1 NOT NULL
   , string      TEXT GENERATED ALWAYS AS
-    ( song_type || ' - ' || language || ' / ' || source_name || ' - ' || category ||
+    ( category || ' - ' || language || ' / ' || source_name || ' - ' || song_type ||
       song_number || ' - ' || song_name || ' [ ' || author_name || ' ]' ||
       CASE WHEN available = 0 THEN ' (U)' ELSE '' END
     ) STORED
@@ -32,7 +32,8 @@ CREATE TABLE IF NOT EXISTS kara_type
   );
 
 INSERT OR REPLACE INTO kara_type (id, name) VALUES
-  (1, 'vo'), (2, 'va'), (3, 'amv'), (4, 'cdg'), (5, 'autres'), ( 6, 'vocaloid');
+  (1, 'ED/d*'), (2, 'OP/d*'), (3, 'AMV'), (4, 'IS'), (5, 'VOCA'), (6, 'LIVE'),
+  (7, 'CDG'), (8, 'PV'), (9, 'MV');
 
 CREATE TABLE IF NOT EXISTS kara_category
   ( id   INTEGER PRIMARY KEY
@@ -40,8 +41,7 @@ CREATE TABLE IF NOT EXISTS kara_category
   );
 
 INSERT OR REPLACE INTO kara_category (id, name) VALUES
-  (1, 'ED/d*'), (2, 'OP/d*'), (3, 'AMV'), (4, 'IS'), (5, 'VOCA'), (6, 'LIVE'),
-  (7, 'CDG'), (8, 'PV'), (9, 'MV');
+  (1, 'vo'), (2, 'va'), (3, 'amv'), (4, 'cdg'), (5, 'autres'), ( 6, 'vocaloid');
 
 CREATE TABLE IF NOT EXISTS language
   ( id   INTEGER PRIMARY KEY
diff --git a/src/database/open.c b/src/database/open.c
index 685d6b8138aa2a026fe088a3a63ee70bc128c9ae..35c2d6129c659bbef82950bbdd4f1a22753ac691 100644
--- a/src/database/open.c
+++ b/src/database/open.c
@@ -38,6 +38,10 @@ static const char *const SQL_MEM_SCHEM =
     "  , PRIMARY KEY (section, key)"
     "  ) WITHOUT ROWID;\n";
 
+/* Should be, defined scripts_init_sql and its length scripts_init_sql_len */
+extern unsigned char ___scripts_init_sql[];
+extern int ___scripts_init_sql_len;
+
 #define INVALID_CHARS_DBPATH    ":?!'\""
 #define HEAP_LIMIT_SOFT         100 * 1024 * 1024
 #define HEAP_LIMIT_HARD         150 * 1024 * 1024
@@ -174,3 +178,15 @@ database_detach(sqlite3 *db, const char *name)
     LOG_INFO_SCT("DB", "Database '%s' detached", name);
     return true;
 }
+
+bool
+database_init(const char *dbpath)
+{
+    sqlite3 *db;
+    GOTO_IF(SQLITE_OK != sqlite3_open(dbpath, &db), "Failed to open the database", error);
+    SQLITE_EXEC(db, (const char *) ___scripts_init_sql, error);
+    LOG_INFO_SCT("DB", "Initialized the 'disk' database successfully, path was '%s'", dbpath);
+error:
+    LOG_ERROR_SCT("DB", "Failed to init the 'disk' database, path was '%s'", dbpath);
+    return false;
+}
diff --git a/src/main/lktadm.c b/src/main/lktadm.c
index 79be9a80bb20aaeec6dee83a2b88a57c7b910ec5..f7b8e7b167afd0d449a264bcd1ea739da063ef52 100644
--- a/src/main/lktadm.c
+++ b/src/main/lktadm.c
@@ -130,6 +130,8 @@ init_populate__(struct lkt_cmd_args *args)
 {
     UNUSED(args);
     open_db();
+    if (!database_open(db, db_path))
+        fail("Failed to open database");
     database_update(db, kara_dir);
     sqlite3_close(db);
     exit(EXIT_SUCCESS);