Selecting data from mysql using qt?
-
db.lasterror().text() should come after line 16 (db.open()).
The password in the Qt code must be the same what you have specified in the GRANT command above.I suspect probably, you haven't made the database and the table in mysql yet, if you go back to mysql command line, what do you get by these commands:
@SHOW databases;
USE testTwo;
SHOW tables;@
I go to dinner, be back in a few minutes :)
-
You put my debug before opening the connection. Put it after.
-
i changed db.lastError().text(); and place it after db.open()
this is the output
@
Starting /home/zafar/c++/dbExample-build-desktop/dbExample...
"Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) QMYSQL: Unable to connect"
false
QSqlQuery::exec: database not open
/home/zafar/c++/dbExample-build-desktop/dbExample exited with code 0
@the commands in mysql displayed are here
repectively to your commands@
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cdcol |
| mysql |
| phpmyadmin |
| test |
| testTwo |
+--------------------+
6 rows in set (0.01 sec)mysql> use testTwo
Database changed
mysql> show tables
-> ;
+-------------------+
| Tables_in_testTwo |
+-------------------+
| testTable |
+-------------------+
1 row in set (0.01 sec)@
-
any clues?
-
Change the 19th line to
@QSqlQuery query(db);@
-
same error again
-
Take a look into mysql logs to see what happens when you are trying to connect from your application.
-
how can i check that mysql logs and from where?
-
[quote author="doforumda" date="1286880547"]how can i check that mysql logs and from where? [/quote]
Try to find them:
@find /opt/lampp -name log -type d@When you find the log directory, find a log for mysql and use tail utility:
@tail -f /path/to/mysql.log@
-
this command didnt return something
@
root@zafar-laptop:/# find /opt/lampp -name log -type d
root@zafar-laptop:/#
@ -
i have a folder inside lampp with the name logs. is it the one which your are talking about
-
Solution 1:
@find /opt/lampp -name '*.log'@
This might need sudo'ing.Solution 2:
If 1st fails then you need to find the config files for mysql (it should be located in /opt/lampp directory) and try to find out what is the location of mysql's log files. -
there are 6 files in there but no mysql.log
these are the files
access_log, cgisock.1693, error_log, httpd.pid, php_error_log, ssl_request_log -
Don't bother with the log files, I guess Qt looks at the wrong place for the socket file...
Let's check this line in your mysql config file (my.cnf):
socket = /var/run/mysqld/mysqld.sock
You should find my.cnf in /etc/ or /etc/mysql/ ... I don't know ubuntu that much.
-
1st solution returns this
@
root@zafar-laptop:/# find /opt/lampp -name *.log
/opt/lampp/htdocs/xampp/contrib/sqlnet.log
@ -
with which editor i can view that .conf file. with gedit or something.
-
[quote author="¤ Dii ¤" date="1286881470"]
You should find my.cnf in /etc/ or /etc/mysql/ ... I don't know ubuntu that much.[/quote]I don't think that this config will be in /etc. He uses lampp - a preconfigured bundle. That config might be in /opt/lampp.
-
BTW a quick sum:
- mysql is installed
- database and tables are created
- access is granted
- qt code looks fine
I see two possibilities here: libmysqlclient is missing, or the socket file is at different place.
-
the file my.cnf is in etc/mysql folder
-
doforumda: use gedit
sudo gedit /etc/mysql/my.cnf
at least most of the ubuntu machines have the config file there.