crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QMYSQL: Unable to open database
vanvo
  опции профиля:
сообщение 17.4.2009, 11:49
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


Программа теперь собираетсмя с плагином MySQL. Но возникает ошибка при запуске:
QSqlError(0, "QMYSQL: Unable to open database 'diabetes'", "")


Плюнул на плагин мускула и успешно подключелся к бд через MyODBC


----
отделено от темы драйвер MySQL

Сообщение отредактировал Litkevich Yuriy - 7.5.2009, 21:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 19.4.2009, 0:09
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
Программа теперь собираетсмя с плагином MySQL. Но возникает ошибка при запуске:

libmysql.dll в папку с прогой либо в windows/system32 положи
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 7.5.2009, 20:04
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(LE0N @ 19.4.2009, 1:09) *
libmysql.dll в папку с прогой либо в windows/system32 положи

Не помогает...
Дело в том, что если в программу подставить неверный пароль к бд, то появляется "правильная" ошибка:
QSqlError(1045, "QMYSQL: Unable to connect", "Access denied for user 'cooler'@'118-32-220-62-dyn.hn.nnov.stream.ru' (using password: YES)")

Т.е. к базе он все-таки коннектится. А при правильном логине\пароле происходит следующее:
QSqlError(0, "QMYSQL: Unable to open database 'diabetes'", "")
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.5.2009, 21:18
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


vanvo, приведи ту часть кода, где при работе с БД происходит ошибка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 8.5.2009, 8:01
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


Программа самая простая, один из примеров из книжки Шлее
#include <QtSql>

static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("diabetes");

    db.setUserName("cooler");
    db.setHostName("195.122.253.11");
    db.setPort(3306);
    db.setPassword("******");
    if (!db.open()) {
        qDebug() << "Cannot open database:" << db.lastError();
        return false;
    }
    return true;
}

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QCoreApplication app(argc, argv);

    if (!createConnection()) {
        return -1;
    }
    
    //Creating of the data base
    QSqlQuery query;
    QString   str  = "CREATE TABLE addressbook ( "
                         "number INTEGER PRIMARY KEY NOT NULL, "
                         "name   VARCHAR(15), "
                         "phone  VARCHAR(12), "
                         "email  VARCHAR(15) "
                     ");";

    if (!query.exec(str)) {
        qDebug() << "Unable to create a table";
    }

    //Adding some information
    QString strF =
          "INSERT INTO  addressbook (number, name, phone, email) "
          "VALUES(%1, '%2', '%3', '%4');";

    str = strF.arg("1")
              .arg("Piggy")
              .arg("+49 631322187")
              .arg("piggy@mega.de");
    if (!query.exec(str)) {
        qDebug() << "Unable to do insert opeation";
    }

    str = strF.arg("2")
              .arg("Kermit")
              .arg("+49 631322181")
              .arg("kermit@mega.de");
    if (!query.exec(str)) {
        qDebug() << "Unable to do insert operation";
    }

    if (!query.exec("SELECT * FROM addressbook;")) {
        qDebug() << "Unable to execute query - exiting";
        return 1;
    }

    //Reading of the data
    QSqlRecord rec     = query.record();
    int        nNumber = 0;
    QString    strName;
    QString    strPhone;
    QString    strEmail;

    while (query.next()) {
        nNumber  = query.value(rec.indexOf("number")).toInt();
        strName  = query.value(rec.indexOf("name")).toString();
        strPhone = query.value(rec.indexOf("phone")).toString();
        strEmail = query.value(rec.indexOf("email")).toString();
    
        qDebug() << nNumber << " " << strName << ";\t"
                 << strPhone << ";\t" << strEmail;
    }

    return 0;
}

И в функции createConnection происходит ошибка:
Cannot open database: QSqlError(0, "QMYSQL: Unable to open database 'diabetes'", "")


Сообщение отредактировал vanvo - 8.5.2009, 8:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.5.2009, 9:52
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(vanvo @ 8.5.2009, 12:01) *
db.setDatabaseName("diabetes");
а что путь не надо указывать, только имя?
Я смускулем не работал. Но с огнептицем это будет работать только если псевдоним задать в настройках огнептица.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 8.5.2009, 10:40
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 8.5.2009, 10:52) *
а что путь не надо указывать, только имя?
Я смускулем не работал. Но с огнептицем это будет работать только если псевдоним задать в настройках огнептица.

Хм... Хороший вопрос... Я не знаю.. Да, в огнептице нужен алиас, но вот например в odbc он не нужен... или mysql connector odbc делает это за нас.

Сообщение отредактировал vanvo - 8.5.2009, 10:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.5.2009, 17:00
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(vanvo @ 8.5.2009, 14:40) *
но вот например в odbc он не нужен
в ODBC ты его как раз сам создаёшь, при создании источника данных (DSN'а). А про мускуль надо где-то читать. Может на sql.ru есть что-то интересное?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.2.2025, 0:53