пятница, 30 января 2015 г.

QT Sqlite Error Create Table Out Of Memory Unable to execute statement.

Проблема/ошибка возникает если экземпляр базы данных передается в (конструктор) так или иначе метода QSqlQuery раньше чем база данных была открыта;

Пример Ошибки :
m_qSqlBase = QSqlDatabase::addDatabase("QSQLITE");
m_qSqlBase.setDatabaseName("real.db");

//Проблемное место.
QSqlQuery qSqlQuery(m_qSqlBase);

if(m_qSqlBase.open())
{
    if(!qSqlQuery.exec("CREATE TABLE IF NOT EXISTS ...");
    
//Появится ошибка при вызове метода exec экземпляра QSqlQuery
}

Решение :
m_qSqlBase = QSqlDatabase::addDatabase("QSQLITE");
m_qSqlBase.setDatabaseName("real.db");
if(m_qSqlBase.open())
{
   QSqlQuery qSqlQuery(m_qSqlBase);
   if(!qSqlQuery.exec("CREATE TABLE IF NOT EXISTS ...");
   // Все окей можно продолжать работать.
}
else 
//Невозможно открыть бд


четверг, 29 января 2015 г.

QT Creator не обрабатывается правый клик

Проблема:
Баг, когда происходит правый клик., но он не отрабатывается как надо в QT Creator'e, например щелчок по форме/etc., вызове меню.
Решение:
Запустите QT Creator с правами администратора.

четверг, 15 января 2015 г.

Error: 1807 Could not obtain exclusive lock on database ‘model’. Retry the operation later

Ошибка MS SQLServer:


Error: 1807 Could not obtain exclusive lock on database ‘model’. Retry the operation later

Error:














Возможные случаи возникновения данной ошибки:
   1) Используется еще одна сессия на другом компьютере(Открыт экземпляр сессии на другом компьютере
компьютере SQL SERVER Management Studio);
   2) Проверьте доступное место на жестком диске;
   3) Возможно некоторые службы(MS Server) запущенны не с правами SYSTEM;
  
И так если у вас действительно проблема 1) и нет доступа к компу и вы не хотите искать где открыта сессия:

Решение:
  Откройте Management Studio и выполните следующий скрипт:
SELECT request_session_id  FROM sys.dm_tran_locks
WHERE resource_database_id = DB_ID('Model')

При выполнение запроса вы увидите ID сессии которая лочит бд; 

Теперь выполните команду для убийства сессии;

Kill  тут_id_сессии(например 53)

P.S Перезапустите Management Studio;