Программа изначально писалась на 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
Вопрос снят,
Вопрос снят, тут просто различия при CREATE TABLE ну и там по коду кое где мои косяки были.
А то что кричит что "не поддерживается" - это всё фигня, оно работает.