Программа изначально писалась на SQLite, но показывать нужно будет на PostgreSQL.
При попытке проверок возникли неокторые проблемы. При открытии БД с драйвером QPSQL ругается на
This version of PostgreSQL is not supported and may not work.
но БД открывает, а затем создаёт таблицы след. кодом:
bool sql::initDatabase() {
qDebug() << "sql::initDatabase()";
if(cnf->dbType=="QSQLITE") {
QFile file(cnf->dbName);
file.remove();
}
if(openDatabase()) {
QSqlQuery query;
query.exec("CREATE TABLE category ("
"id INTEGER PRIMARY KEY,"
"name VARCHAR(64) NOT NULL,"
"nth INTEGER NOT NULL,"
"items INTEGER)");
if(!checkQuery(query)) return false;
query.exec("CREATE TABLE disc ("
"id INTEGER PRIMARY KEY,"
"name VARCHAR(128) NOT NULL,"
"descr TEXT,"
"year INTEGER,"
"catid INTEGER NOT NULL,"
"type INTEGER,"
"FOREIGN KEY (catid) REFERENCES category)");// ON UPDATE CASCADE)");
if(!checkQuery(query)) return false;
query.exec("CREATE TABLE files ("
"id INTEGER PRIMARY KEY," // просто id записи
"name VARCHAR(1024) NOT NULL," // имя файла/директории (не путь)
"parentid INTEGER NOT NULL," // id записи родителя (директории), для верхнего уровня 0
"type INTEGER NOT NULL," // тип: директория или файл (тип файла по необходимости)
"size INTEGER NOT NULL," // размер
"date VARCHAR(20)," // дата файла, не обязательно
"metadata INTEGER," // ссылка на метаданные если нужно.
"discid INTEGER NOT NULL," // ссылка на диск к которому принадлежат файлы
"FOREIGN KEY(discid) REFERENCES disc)");
if(!checkQuery(query)) return false;
return true;
} else
return false;
}
На что в консоль ругается:
NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс "category_pkey" для таблицы "category"
NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс "disc_pkey" для таблицы "disc"
NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс "files_pkey" для таблицы "files"
То есть мой предполагаемый индекс id оказывается вообще ни у дел. Как мне решить эту проблемы? Если интересны исходнники то я выкладывал их в соседней теме, вот здесь:
http://prog.org.ru/forum/index.php/topic,7298.0.html