MySQL для Qt на Mac - PullRequest
       4

MySQL для Qt на Mac

6 голосов
/ 28 сентября 2011

Я потратил около 6 часов, пытаясь заставить MySQL работать с Qt, следуя всевозможным инструкциям из Интернета. Я хочу отрезать себе запястье сейчас!

У кого-нибудь есть простое и подробное объяснение того, как установить драйвер QMYSQL в Qt?

У меня Mac 10.6, и я новичок n00b.

Ваша помощь будет оценена от всего сердца!

Сана.

EDIT:

Когда я выполняю grep, я получаю следующие файлы, поэтому я просто скопировал libqsqlmysql.dylib во все папки, но все равно не могу скомпилировать ... Я получаю сообщение об ошибке QSqlDatabase: QMYSQL driver not loaded

/Library/Application Support/DivX/QtPlugins/sqldrivers/libqsqlite.dylib 
/Users/pfn368/QtSDK/Assistant.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Designer.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Desktop/Qt/4.8.0/gcc/plugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Desktop/Qt/4.8.0/gcc/plugins/sqldrivers/libqsqlite_debug.dylib
/Users/pfn368/QtSDK/Desktop/Qt/474/gcc/plugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Desktop/Qt/474/gcc/plugins/sqldrivers/libqsqlite_debug.dylib
/Users/pfn368/QtSDK/Madde/sysroots/harmattan-arm-sysroot/usr/lib/qt4/plugins/sqldrivers/libqsqlite.so
/Users/pfn368/QtSDK/Madde/sysroots/harmattan-nokia-arm-sysroot/usr/lib/qt4/plugins/sqldrivers/libqsqlite.so
/Users/pfn368/QtSDK/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim/usr/lib/qt4/plugins/sqldrivers/libqsqlite.so
/Users/pfn368/QtSDK/Qt Creator.app/Contents/MacOS/qmlpuppet.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Qt Creator.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/QtSources/4.8.0/plugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/QtSources/4.8.0/plugins/sqldrivers/libqsqlite_debug.dylib
/Users/pfn368/QtSDK/Simulator/Application/simulator.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Simulator/Qt/gcc/plugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Simulator/Qt/gcc/plugins/sqldrivers/libqsqlite_debug.dylib

Это мой .pro файл

QT       += sql core gui\
           network

TARGET = mini-stock-exchange
TEMPLATE = app

SOURCES += ./src/main.cpp\
        ./src/mainwindow.cpp

HEADERS  += ./header/mainwindow.h

FORMS    += ./ui/mainwindow.ui

Мое включает

#include "./header/mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QFile>
#include <QtSql/QSqlError>
#include <qsqldatabase.h>
#include <QtCore>
#include <QtSql>

Код для вызова базы данных

QSqlDatabase defaultDB = QSqlDatabase::addDatabase("QMYSQL3");
if ( !defaultDB.isValid() ) {
    qWarning( "Failed to connect to the database driver" );
}
defaultDB.setDatabaseName( "nicu" );
defaultDB.setUserName( "root" );
defaultDB.setPassword( "root" );
defaultDB.setHostName( "http://localhost:8889" );

Ответы [ 3 ]

3 голосов
/ 13 сентября 2013

Пакеты Qt 4 от Mac Homebrew имеют возможность установить mysql-драйверы в качестве плагина Qt по умолчанию (это не вариант по умолчанию, поэтому вы его упускаете).

Загрузите и установите программное обеспечение Mac OS X Homebrew, как описано здесь: http://brew.sh.

После установки homebrew удалите ранее установленную Qt4.

Если вы установили его с помощью brew, просто наберите на терминале:

$ brew remove qt4

Чтобы установить его с поддержкой mysql, запустите:

$ brew install qt4 --with-mysql

И каждый раз, когда вам нужно установить пакет с некоторыми опциями в brew, но вы не знаете поддерживаемых опций, просто введите:

$ brew options FORMULA_NAME

И он покажет все параметры сборки, доступные для данной формулы.

2 голосов
/ 16 мая 2013

Сначала загрузите исходники Qt SDK и версию исходных текстов сервера mysql, извлеките их оба.

Создание символических ссылок на lib-файлы MySQL:

sudo ln -s /Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.dylib
sudo ln -s /Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient_r.dylib
sudo ln -s /Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
sudo ln -s /Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient_r.18.dylib

После этого cd в ваш извлеченный Qt SDK в папку /Users/simon/Downloads/qt-everywhere-opensource-src-4.8.4/src/plugins/sqldrivers/mysql

Сборка библиотек:

qmake -spec macx-g++ -o Makefile "INCLUDEPATH+=/Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/include" "LIBS+=-L/usr/lib -lmysqlclient_r" mysql.pro
make
mv libqsqlmysql_debug.dylib libqsqlmysql.dylib
cp -R libqsqlmysql.dylib /Developer/Applications/Qt/plugins/sqldrivers/

После этого вы сможете использовать плагин QMYSQL. Проверьте, правильно ли была загружена библиотека с этой строкой кода (поместите ее в какой-нибудь конструктор, чтобы вы получили вывод сразу после запуска приложения):

qDebug() << QCoreApplication::libraryPaths();
qDebug() << QSqlDatabase::drivers();

Например, мой вывод теперь выглядит так:

("/Developer/Applications/Qt/plugins", "/Users/simon/Coding/qt4c/build-SQLtable-Desktop-Debug/SQLtable.app/Contents/MacOS") 
("QSQLITE", "QMYSQL3", "QMYSQL", "QODBC3", "QODBC", "QPSQL7", "QPSQL") 
0 голосов
/ 28 сентября 2011

Сана, я попытаюсь сохранить эту руку, хорошо.

Сначала тебе нужен пакет с открытым исходным кодом Qt везде из интернета.Я понятия не имею, какую версию Qt вы используете, но вам нужна та же версия, что и для установки вашего ядра.

Во-вторых, вы попадаете в пакет с исходным кодом и просматриваете плагины, пока не найдете драйверы sql и плагин mysql.На этом этапе убедитесь, что вы знаете, по какому пути идут ваши библиотеки и библиотеки mysql, и вам понадобится.

В-третьих, измените .pro для плагина mysql и добавьте свой путь включения MySql в INCLUDEPATH + = иlibs to .... LIBS + =

В-четвертых, запустите qmake на .pro, чтобы сгенерировать Makefile, затем создайте файл make, и вы увидите несколько симпатичных файлов .dylib, которые смотрят на вас с полными глазамирадости

В-пятых, самое интересное, вам нужно найти, где находятся другие плагины, и это зависит от системы.Самый быстрый способ их найти - это тип терминала 'sudo find / |grep libqsqlite ', и он даст вам местоположение этого, и это ваш каталог плагинов Qt sqldrivers.Скопируйте только что созданный вами дилиб.

И это должно сработать.Это сработало для меня на многих сборках и перестройках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...