Russian Qt Forum
Сентябрь 30, 2024, 22:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не создается база в MYSQL  (Прочитано 6077 раз)
nikita
Гость
« : Март 23, 2012, 14:42 »

Всем привет! Заранее прошу прощенья за глупый вопрос, но я недавно начал работать с QT.
Пытаюсь создать базу в MYSQL, но ничего не выходит. Работаю под Линуксом. Код(С++):
#include <QtSql>

int main(int argc, char** argv)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

    qDebug()<<QSqlDatabase::drivers();
    db.setDatabaseName("myDB.db");
    db.setUserName("root");

    if(!db.isValid())
      qDebug()<<"DataBase not valid!!!";
    else
      qDebug()<<"DataBase valid!!!";

   if(!db.open())
      {
         qDebug()<<"DataBase not create!!!!";
         qDebug()<<db.lastError();
      }
      else
         qDebug()<<"DataBase create!!!!";
      qDebug()<<"Name = "<<db.databaseName();

      db.close();
}

Все собирается при помощи Cmake без ошибок. При запуске пишет в консоль :
("QSQLITE", "QMYSQL3", "QMYSQL")
DataBase valid!!!
DataBase not create!!!!
QSqlError(1049, "QMYSQL: Unable to connect", "Unknown database 'myDB.db'")
Name =  "myDB.db"

Помогите плиз, почему ничего не получается если драйвер MYSQL видет???
P.S.: Если в коде вместо MYSQL указать SQLITE, то всё работает отлично.
Записан
QuAzI
Гость
« Ответ #1 : Март 23, 2012, 14:46 »

Расширение db у файлов было ещё во времена тухлого Paradox. SQLite как раз файл создаёт. Пиши без расширения, возможно вообще в кавычки возьми и будет тебе счастье, только сначала сообрази, что не с файлами работаешь, а с нормальной СУБД
Записан
QuAzI
Гость
« Ответ #2 : Март 23, 2012, 14:50 »

Нужен сервер, на сервере нужен установленный пароль и если работаешь не локально, нужно при установке MySQL включить опцию удалённого подключения рута.
Записан
nikita
Гость
« Ответ #3 : Март 23, 2012, 14:51 »

Писал и без расширения
db.setDatabaseName("myDB");

Все равно ошибка та же!!!!
Все прекрасно работает если вообще не указывать имя базы, но что оно создает - не понятно((
Записан
mutineer
Гость
« Ответ #4 : Март 23, 2012, 14:51 »

Писал и без расширения
db.setDatabaseName("myDB");

Все равно ошибка та же!!!!
Все прекрасно работает если вообще не указывать имя базы, но что оно создает - не понятно((

гугли как ставить и запускать сервер нужной БД
Записан
nikita
Гость
« Ответ #5 : Март 23, 2012, 14:52 »

Я работаю локально. Как поставить этот сервер?
Записан
QuAzI
Гость
« Ответ #6 : Март 23, 2012, 14:55 »

Я ставил 5.0.67 с официального сайта на винде и к нему собирал драйвер.
http://dev.mysql.com/downloads/mysql/5.0.html

Подключаемся с юзверем+паролем к базе, при обломе считаем что БД не создана, пробуем создать:
При создании БД нужно подключаться в режиме админа (root) без указания имени базы данных, затем
Код:
query->exec(QString("CREATE DATABASE `%1` character set utf8").arg(dbname));
query->exec(QString("CREATE USER '%1'@'localhost' IDENTIFIED BY '%2'").arg(dbuser).arg(dbpass));
query->exec(QString("grant all on %1.* to `%2`@`%` IDENTIFIED BY '%3'").arg(dbname).arg(dbuser).arg(dbpass));
И затем отключаемся и снова тыкаемся к нашей созданной базе с нужным логином/паролем.
« Последнее редактирование: Март 23, 2012, 14:59 от QuAzI » Записан
nikita
Гость
« Ответ #7 : Март 23, 2012, 15:04 »

спасибо, так и сделаю. Надеюсь поможет)
Записан
nikita
Гость
« Ответ #8 : Апрель 01, 2012, 15:09 »

Наконец-то разобрался с этим вопросом! Пишу решение для будущих поколений)))
Для работы с MYSQL базами данных действительно нужен сервер( в Линуксе я установил пакет mysql-server). Потом нужно корректно подключиться к этому локальному серверу :
Код (С++)
 
  QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  db.setUserName("root");
   if(db.open())
  {
      qDebug()<<"Connect to MYSQL server!!!";
      QSqlQuery q("CREATE DATABASE name");
      q.exec();
      db.setDatabaseName("name");
      if(db.open())
        работа с базой
  }
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 21.