Добрый день, всем.
Уважаемые коллеги, прошу помощи разобраться с ошибкой:
File: ../mysqldatabase.cpp Line: 89 Function: bool mySqlDatabase::sqlCreateDatabase(const QString&)
QSqlError("42601", "QPSQL: Невозможно создать запрос", "ERROR: syntax error at or near "("LINE 1: EXECUTE ('mybase') ^(42601)") // Создаем новую базу.
QSqlQuery createbase;
createbase.prepare("CREATE DATABASE ? "
"ENCODING = 'UTF8' "
"LC_COLLATE = 'ru_RU.UTF-8' "
"LC_CTYPE = 'ru_RU.UTF-8' "
"TABLESPACE = pg_default "
"OWNER = postgres;");
createbase.bindValue(0, name.toLower());
if (!createbase.exec()) {
qCritical() << createbase.lastError();
base.close();
return false;
}
Из pgAdmin отрабатывает нормально:
CREATE DATABASE "mybase"
ENCODING = 'UTF8'
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
TABLESPACE = pg_default
OWNER = postgres;
Нашел костыль: // Создаем новую базу.
QString mStrSql = QString("CREATE DATABASE %1 "
"ENCODING = 'UTF8' "
"LC_COLLATE = 'ru_RU.UTF-8' "
"LC_CTYPE = 'ru_RU.UTF-8' "
"TABLESPACE = pg_default "
"OWNER = postgres;").arg('"'+name.toLower()+'"');
QSqlQuery createbase;
if (!createbase.exec(mStrSql)) {
qCritical() << createbase.lastError();
base.close();
return false;
}
Но может есть другие варианты?
Буду рад обсудить.