Название: Не создается база в MYSQL Отправлено: 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, то всё работает отлично. Название: Re: Не создается база в MYSQL Отправлено: QuAzI от Март 23, 2012, 14:46 Расширение db у файлов было ещё во времена тухлого Paradox. SQLite как раз файл создаёт. Пиши без расширения, возможно вообще в кавычки возьми и будет тебе счастье, только сначала сообрази, что не с файлами работаешь, а с нормальной СУБД
Название: Re: Не создается база в MYSQL Отправлено: QuAzI от Март 23, 2012, 14:50 Нужен сервер, на сервере нужен установленный пароль и если работаешь не локально, нужно при установке MySQL включить опцию удалённого подключения рута.
Название: Re: Не создается база в MYSQL Отправлено: nikita от Март 23, 2012, 14:51 Писал и без расширения
db.setDatabaseName("myDB"); Все равно ошибка та же!!!! Все прекрасно работает если вообще не указывать имя базы, но что оно создает - не понятно(( Название: Re: Не создается база в MYSQL Отправлено: mutineer от Март 23, 2012, 14:51 Писал и без расширения гугли как ставить и запускать сервер нужной БДdb.setDatabaseName("myDB"); Все равно ошибка та же!!!! Все прекрасно работает если вообще не указывать имя базы, но что оно создает - не понятно(( Название: Re: Не создается база в MYSQL Отправлено: nikita от Март 23, 2012, 14:52 Я работаю локально. Как поставить этот сервер?
Название: Re: Не создается база в MYSQL Отправлено: QuAzI от Март 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)); Название: Re: Не создается база в MYSQL Отправлено: nikita от Март 23, 2012, 15:04 спасибо, так и сделаю. Надеюсь поможет)
Название: Re: Не создается база в MYSQL Отправлено: nikita от Апрель 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()) работа с базой } |