Terminal & mysql
I have the GUI tools for mysql and have no problem creating and accessing databases through these tools, but I am unable to do anything with mysql through the terminal window.
As a novice with the terminal and unix were should I start as no mysql command works at all.
Thanks
I use mysql from terminal all the time. Normally, it is installed into "/usr/local/bin", but that directory is not in your default path. I have a ".bashrc" file in my home directory that has the following:
if [ -d "/usr/local/sbin" ]; then
export PATH="/usr/local/sbin:${PATH}"
fi
if [ -d "/usr/local/bin" ]; then
export PATH="/usr/local/bin:${PATH}"
fi
Generally, you want the /usr/local directories first and those statements do it. This will make it work everytime that you start up Terminal. As an experiment, just enter the export commands when you start up terminal and then try the mysql command below.
If that is not your problem, but you can't start mysql. You use:
mysql -p -u xyzzy<return>
where xyzzy is your mysql user name. Then you will be prompted for your mysql password. Assuming you logged on, you can enter the sql commands from there. Make you that you end each one with a ';'. Also,'quit;' gets you out of mysql.
By your description, I wasn't exactly sure what your problem is. If it is neither above, could you give me more details? Like error messages or a transcript of your interaction with mysql.
Terminal has a handy feature. You use AppleKey+k to clear the terminal screen/log. Then enter your commands. Then use the terminal menu, File->Save Text as..., to save the terminal log as text to a file. If it is not too long, then you can post it in a message here.
HTH
Disregard the lines being drawn through '-d "/usr/local/..."', it must be a formatting command to the discussion group somehow. Just use the stuff behind it.
Message was edited by: Bob White
Similar Messages
-
Learn Terminal, MySQL, PHP
I am looking for someone in the Tampa area to show me how to access and use Terminal, MySQL and PHP on my Macs. I am getting ready to take some online classes in MySQL and PHP and need to have those programs up and running on my Macs. I am willing to pay someone for tutoring.
Thanks,
JJThanks for your reply. I do understand that he education I receive would be applicable to the Mac, but my roblem is that I do not know how to use Terminal, and how to see whether o not I have PHP and MySQL installed properly on my machines. What's more, how to access these programs.
THanks. -
I am a total newbie in using terminal. I installed MAMP and am trying to find my way around through a php/mysql tutorial.
Issue: I can get my Terminal prompt to show as mysql> but however I try to type in commands (as per the tutorial) I keep getting a new line with and arrow ( -> ).
Can you point me in the right direction?
Thanks.It is waiting for you to finish the command. Until you end the command line, it keeps waiting for you to add more to the command. If it is like other SQL, then end the command with a semi-colon (;)
-
Terminal/mysql screwup - internet not working now!
I was working in Terminal trying to setup mysql on my g4 powerbook to get Wordpress to work, but someone quit my session of Terminal in the middle of it. Now the internet will not connect. I am using a simple eternet connection. Can someone help me get this back to normal (I won't worry about intalling Wordpress right now. Here is what my Terminal history looks like:
Welcome to Darwin!
PowerBook:~ Powerbook$ history
1 cd /usr/local/mysql
2 sudo chown -R mysql data/
3 sudo echo
4 sudo ./bin/mysqld_safe &
5 /usr/local/mysql/bin/mysql test
6 /usr/local/mysql/bin/mysql -u root -p
7 /usr/local/mysql/bin/mysql test
8 sudo pico /etc/httpd/httpd.conf
9 mysql
10 quit
11 pkgrm PACKAGE_NAME
12 pkginfo
13 cd /usr/local
14 sudo rm mysql
15 sudo rm -rf mysql-3.23.47-apple-darwin5.1-p
16 history
PowerBook:~ Powerbook$Hi again Robert! Glad you found your way here.
It could be that step 8: sudo pico /etc/httpd/httpd.conf, is the cause of your problem. Did you save the original file first? Is there a backup file in that directory (either httpd.conf~ or httpd.conf.bak)?
Do you have a httpd.conf.default in there? I do, but may have created it myself.
Also, step 4 created a background process that may still be running. I don't know how that would affect things. Maybe someone with MySQL knowledge can chip in.
Anyway, I'm sure you'll find an answer now you're posting in the right place -
10.6.8 MySQL socket issues
I can't get MySQL to run. It's the same with every other system update, each time requiring a new workaround.
In the terminal:
$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2)
Then I try:
$ sudo edit /etc/my.cnf
And find an old fix:
[client]
socket=/var/mysql/mysql.sock
[mysqld]
socket=/var/mysql/mysql.sock
Which I delete and save. Back in the terminal,
$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Interestingly, I have no trouble loading the database in Sequel Pro. When I view the server variables in Sequel Pro, I see:
socket = /tmp/mysql.sock
Please help me figure this out again.Editor is wonky. Sorry.
-
MySQL on XAMPP does not react with mysql ?
Hello, here is a strange issue. I am learning mysql and I had to create a database on mysql. I did the following(opened terminal ) :
$ mysql -u root -p
>CREATE DATABASE storage
>show databases;
it outputs that it`s OK, db is created, however it`s empty. Good. When I login to XAMPP, there is no such database in the whole mysql search. I searched every database from phpMyadmin, but there is nothing there... ?
I`ve restarted mysld from /etc and restarted XAMPP but still nothing. Any info or help???The only way to reinstall Safari on a Mac running v10.7 Lion is to restore OS X using OS X Recovery
Instead of restoring OS X in order to reinstall Safari, try troubleshooting extensions.
From the Safari menu bar click Safari > Preferences then select the Extensions tab. Turn that OFF, quit and relaunch Safari to test.
If that helped, turn one extension on then quit and relaunch Safari to test until you find the incompatible extension then click uninstall.
If it's not an extensions issue, try troubleshooting third party plug-ins.
Back to Safari > Preferences. This time select the Security tab. Deselect: Allow plug-ins. Quit and relaunch Safari to test.
If that made a difference, instructions for troubleshooting plugins here.
If it's not an extension or plug-in issue, delete the cache.
Open a Finder window. From the Finder menu bar click Go > Go to Folder
Type or copy paste the following
~/Library/Caches/com.apple.Safari/Cache.db
Click Go then move the Cache.db file to the Trash.
Quit and relaunch Safari to test. -
Mysql.sock - connection error (code 2002)
Performed a clean install of SL Server.
Enabled Web and MySQL services.
When using GUI (SequelPro of MySQL GUI Tools) I get a mysql.sock connection error.
"Could not connect to MySQL instance at localhost. Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (code 2002)"
The database location of MySQL is /var/mysql. Thus a reference to /tmp/mysql.sock is obviously wrong.
The file /var/mysql/mysql.sock does exist but apparently no reference is made to this file.
Q: How to make a reference to the correct socket file,
Coen
info from Terminal:
mysql> status
mysql Ver 14.12 Distrib 5.0.82, for apple-darwin10.0 (i386) using EditLine wrapper
Connection id: 6
Current database:
Current user: s2xladmin@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.82-log Source distribution
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /var/mysql/mysql.sock
Uptime: 1 day 3 hours 41 min 7 sec
Threads: 1 Questions: 12 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.000
Message was edited by: Coen JeukensIt looks looks like the Sequel Pro app is guessing incorrectly that the mysql.sock is in /tmp. If that's the problem, you should be able to fix it by going to Sequel Pro's Connection panel and entering the correct path, which is /var/mysql/mysql.sock.
-
I can not create mysql database
I installed mariadb and mariadb-client. Whent I type this in command line
mysql> CREATE DATABASE menagerie;
a text file was created which name is CREATE and it consist of mysql --help output.
How can I create mysql database?I think the problem is that you took the instructions too literally. There's a system command line, and a MySQL command line; you're likely looking for the second.
Try running in your terminal:
$ mysql
This will bring up a MySQL prompt that will look like:
mysql>
inside of which you can run your "CREATE DATABASE" command. -
Java mysql OK with Terminal but not OK with Apache local web server
With terminal I have :
CLASSPATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Classes/:/Library/Java/Extensions/:./
SUDO_GID=20
SECURITYSESSIONID=210800
_=/usr/bin/printenv
127:/Library/WebServer/Documents/Java root# java TestMySQL
2006-05-21 13:39:00.0 ************************************************** = OK
127:/Library/WebServer/Documents/Java root#
import java.sql.*;
* mysql-connector-java-3.1.12-bin.jar
* % javac /Library/WebServer/Documents/Java/TestMySQL.java
* % java TestMySQL
public class TestMySQL {
public static void main(String argv[]) throws Exception {
// Load the driver class
Class.forName("org.gjt.mm.mysql.Driver");
1 //Class theClass = null;
2 //try {
3 // theClass = Thread.currentThread().getContextClassLoader().loadClass("org.gjt.mm.mysql.Driver");
4 //}
5 //catch (ClassNotFoundException e) {
6 // theClass = getClass().getClassLoader().loadClass("org.gjt.mm.mysql.Driver");
7 //}
Connection conn = DriverManager.getConnection(
"jdbc:mysql:///test",
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("SELECT now();");
while (rset.next()) {
System.out.println(rset.getString(1));
// Close result set, statement and DB connection
rset.close();
stmt.close();
conn.close();
}I have a simple TestMySQL.html file with applet TestMySQL.class in it.
Nothing but "Applet TestMySQL not inited"
When I uncomment the try/catch lines (lines 1 to 7) , java compiler generate an error... near getClass().getClassLoader().loadClass("org.gjt.mm.mysql.Driver");
With "Class.forName("org.gjt.mm.mysql.Driver");" no problem.
Running MacOS X 10.3.9, Apache/1.3.33 (Darwin) PHP/4.4.1 mod_ssl/2.8.24 OpenSSL/0.9.7i and JVM 1.4.2_09
Thanks for help.
P.S. This my first approach to java/mysql but I would like to see this short program running on my local web server ...
Thanks.hi :-)
can you post the stack trace?
im not sure what is causing the error because of less info,
but have you tried to copy the driver of mysql to tomcat lib folder?
regards, -
Help with Ruby on Rails and mysql - I just don't get the terminal...
Let me just start by saying I'm pretty new to using the terminal and unix commands. I've been trying to teach myself how to use Ruby on Rails (ror) over the pasy couple of days and have had some luck but I'm struggling with the terminal.
For instance, when starting a new ror project I need to use the terminal to creat a new database schema (I think this the right terminology) within mysql. The tutorials I'm using suggest that I use the terminal to create the database with a command like:
mysqladmin -u root -p create expenses_development
no matter how I try I cannot seem to find the way to make this work. I contunue to switch directories in the terminal, but am not getting anywhere. Can someone shed some light on where I could be going wrong?
thanks in advance
MacBook Pro Core 2 Duo 2.33 Mac OS X (10.4.8) 2 GB RAMokay, that helped. Here's what I get:
erik-petersons-computer:/usr/local/mysql/bin erikpeterson$ ls
comp_err mysql_zap
makesharedlibdistribution mysqlaccess
makewin_bindist mysqlaccess.conf
makewin_srcdistribution mysqladmin
msql2mysql mysqlbinlog
myprintdefaults mysqlbug
myisam_ftdump mysqlcheck
myisamchk mysqld
myisamlog mysqld_multi
myisampack mysqld_safe
mysql mysqldump
mysqlclienttest mysqldumpslow
mysql_config mysqlhotcopy
mysqlconvert_tableformat mysqlimport
mysqlcreate_systemtables mysqlmanager
mysqlexplainlog mysqlshow
mysqlfindrows mysqltest
mysqlfixextensions mysqltestmanager
mysqlfix_privilegetables mysqltestmanager-pwgen
mysqlsecureinstallation mysqltestmanagerc
mysql_setpermission perror
mysql_tableinfo replace
mysqltzinfo_tosql resolvestackdump
mysql_upgrade resolveip
mysqlupgradeshell safe_mysqld
mysql_waitpid
erik-petersons-computer:/usr/local/mysql/bin erikpeterson$
How would I create a new database from here? -
Hello,
I'm on a Mac Pro Quad Core Intel Xeon (64-bit) using OS 10.6.4. I have mysqlnd 5.0.5-dev - 081106 - $Revision: 289630 $ and PHP Version 5.3.1.
I have also installed phpMyAdmin 3.3.1 and have set up the relations tables in a pmadb within mysql; created a new database with tables; and created some new users. I am able to access and use mysql via phpMyAdmin.
But now I am unable to login to mysql via the Terminal command:
mysql -u root -p
which now returns an error message of:
/usr/local/mysql/bin/mysql: unknown variable 'datadir=/usr/local/mysql/data'
my.cnf file reads:
[mysqld]
datadir=/usr/local/mysql/data
socket=/var/mysql/mysql.sock
#skip-grant-tables=1
[client]
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
and I can see the data directory in that location when using the Terminal.
My questions:
1. Is this related to anything I have done in setting up phpMyAdmin (tables, users)?
2. Is this a permissions problem with the directory named /usr/local/mysql/data?
Currently, the permissions and ownership are this:
drwxr-x--- 11 _mysql wheel 374 Jun 29 12:10 data
3. Is this a problem from upgrading to 10.6.4 recently?
4. Is this a my.cnf problem?
I would really like to be able to do things in the Terminal with mysql in addition to using phpMyAdmin.
Many thanks for any help on this.
Best,
ShelleyShelley Schreiber wrote:
Thanks for your suggestion, etresoft, but this was not helpful, I'm afraid. Removing datadir=/usr/local/mysql/data did not work. And prior to using phpMyAdmin, I was able to login via Terminal with this in place.
Try removing my.cnf. It isn't required and seems to be giving you problems.
Also, the mysql socket value is what comes with new Macs with Snow Leopard.
MySQL doesn't come on any new Mac except with Snow Leopard Server. I think we've had this conversation before and came to the conclusion that you don't have the server version, just a jacked up client.
I am noticing that the Terminal error message I get is saying:
/usr/local/mysql/bin/mysql: unknown variable . . .
whereas the data directory path is /usr/local/mysql/data
There is no data directory in /usr/local/mysql/bin/mysql
The program that is reporting the error is is /usr/local/mysql/bin/mysql.
My MySQL installation does not have a my.cnf file. It does have a number of example cnf files that I could use if I wanted to jack up my installation. None of them have a "datadir" value in them. If you don't want to get rid of my.cnf altogether, the just get rid of all of the datadir values inside it. -
DS XI 3.0 on Terminal Server
Hi All,
We setup DS XI 3.0 on a Windows 2003 Terminal Server. 6 developers are now using the designer tool. For each of them a MySQL Database has been setup and local repositories were created.
One problem occurs: when one developer opens the Designer he always sees the repository information that was last used from ANY of them. Is there any way to solve this issue?
Thanks and Kind Regards,
Ingo TaraskeHi Ingo,
As discussed in this forum recently, Designer is not supported for use by multiple concurrent users via Terminal Services -- the application was never designed to support this. The application was designed to support Citrix, though. Please install the Designer tool on individual Windows installations for each of your users.
Thanks,
~Scott -
How Can I use Mysql's PROCEDURE by Java Can you give me sample???
�������^���������������H�iBEGIN�`END�u���b�N�j�@��TOP
ORACLE�@MSSQL�@SSA�@MySQL�@
���{�I���������������������������B
MySQL�������A ORACLE��MSSSQL��������������BEGIN�`END�u���b�N�����s�������������������������B
���������s�������������K���X�g�A�h�v���O�����������R���p�C�������K�v�����������B
�i�����F�������������������A���w�E�������������K�r�����������j
--drop PROCEDURE sp_hoge;
--�f���~�^�����X��������
delimiter //
CREATE PROCEDURE sp_hoge()
DETERMINISTIC
BEGIN
/* �������� */
DECLARE mystr VARCHAR(20);
DECLARE mycnt INTEGER(2);
/* �l������ */
SET mycnt = 0;
SET mystr = '����';
/* IF�� */
IF mycnt = 0 THEN
SET mystr = '�����Q';
select mystr;
ELSE
select '�����R';
END IF;
/* CASE�� */
CASE extract(month from now())
WHEN 1 THEN SET mystr = '1��';
WHEN 2 THEN SET mystr = '2��';
WHEN 3 THEN SET mystr = '3��';
WHEN 4 THEN SET mystr = '4��';
ELSE SET mystr = '1�`4�����O';
END CASE;
select mystr;
/* WHILE-LOOP */
WHILE mycnt <= 5 DO
SET mycnt = mycnt + 1;
select mycnt;
END WHILE;
/* BEGIN-END�u���b�N������SELECT�������s */
/* PROCEDURE�������\�iFUNCTION���������������j */
select * from help_topic;
END//
delimiter ;
--�X�g�A�h�v���V�[�W�����s
call sp_hoge();
�X�g�A�h�v���V�[�W�����T���v���i�J�[�\�����g�p������LOOP�����j�@��TOP
ORACLE�@MSSQL�@SSA�@MySQL�@
�J�[�\�����g�p����LOOP�������T���v�������B
�����p�����[�^���w�����������������Y�������������������A���E���w�X�^�b�t�x�������������A�����������w�c���X�^�b�t�F�x���\���������B
--drop PROCEDURE sp_hoge;
--�f���~�^�����X��������
delimiter //
CREATE PROCEDURE sp_hoge(inum INTEGER(3))
DETERMINISTIC
BEGIN
/* �������� */
/* �J�[�\���g�p�����f�[�^�L�����f���g�p */
DECLARE done INT DEFAULT 0;
/* �������O������ */
DECLARE v_mystr VARCHAR(20);
/* �J�[�\���g�p�� */
DECLARE v_empnm VARCHAR(40);
DECLARE v_job VARCHAR(20);
/* �J�[�\������ �� �����������������`���� */
DECLARE cur1 CURSOR FOR
select empnm,job from kemp where deptno = inum;
/* �f�[�^��������LOOP�E�o�p���������� */
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
/* �J�[�\���I�[�v�� */
OPEN cur1;
/* LOOP */
LOOPPROC:REPEAT
FETCH cur1 INTO v_empnm,v_job;
IF NOT done THEN
IF v_job = '�X�^�b�t' THEN
SET v_mystr = '�c���X�^�b�t�F';
ELSE
SET v_mystr = '';
END IF;
select CONCAT(v_mystr,v_empnm);
/* ������������LOOP���E�o����������LEAVE�� */
/* LEAVE LOOPPROC; */
END IF;
UNTIL done END REPEAT;
/* �J�[�\���N���[�Y */
CLOSE cur1;
END//
--�f���~�^���Z�~�R�����i�f�t�H���g�j������������
delimiter ;
--�X�g�A�h�v���V�[�W�����s
call sp_hoge(1);
12.2. Control Flow Functions
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
The first version returns the result where value=compare_value. The second version returns the result for the first condition that is true. If there was no matching result value, the result after ELSE is returned, or NULL if there is no ELSE part.
mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
The default return type of a CASE expression is the compatible aggregated type of all return values, but also depends on the context in which it is used. If used in a string context, the result is returned as a string. If used in a numeric context, then the result is returned as a decimal, real, or integer value.
Note: The syntax of the CASE expression shown here differs slightly from that of the SQL CASE statement described in Section 17.2.10.2, �gCASE Statement�h, for use inside stored routines. The CASE statement cannot have an ELSE NULL clause, and it is terminated with END CASE instead of END.
IF(expr1,expr2,expr3)
If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns expr2; otherwise it returns expr3. IF() returns a numeric or string value, depending on the context in which it is used.
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
If only one of expr2 or expr3 is explicitly NULL, the result type of the IF() function is the type of the non-NULL expression.
expr1 is evaluated as an integer value, which means that if you are testing floating-point or string values, you should do so using a comparison operation.
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
In the first case shown, IF(0.1) returns 0 because 0.1 is converted to an integer value, resulting in a test of IF(0). This may not be what you expect. In the second case, the comparison tests the original floating-point value to see whether it is non-zero. The result of the comparison is used as an integer.
The default return type of IF() (which may matter when it is stored into a temporary table) is calculated as follows:
Expression Return Value
expr2 or expr3 returns a string string
expr2 or expr3 returns a floating-point value floating-point
expr2 or expr3 returns an integer integer
If expr2 and expr3 are both strings, the result is case sensitive if either string is case sensitive.
Note: There is also an IF statement, which differs from the IF() function described here. See Section 17.2.10.1, �gIF Statement�h.
IFNULL(expr1,expr2)
If expr1 is not NULL, IFNULL() returns expr1; otherwise it returns expr2. IFNULL() returns a numeric or string value, depending on the context in which it is used.
mysql> SELECT IFNULL(1,0);
-> 1
mysql> SELECT IFNULL(NULL,10);
-> 10
mysql> SELECT IFNULL(1/0,10);
-> 10
mysql> SELECT IFNULL(1/0,'yes');
-> 'yes'
The default result value of IFNULL(expr1,expr2) is the more �ggeneral�h of the two expressions, in the order STRING, REAL, or INTEGER. Consider the case of a table based on expressions or where MySQL must internally store a value returned by IFNULL() in a temporary table:
mysql> CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;
mysql> DESCRIBE tmp;
-------------------------------------------+
| Field | Type | Null | Key | Default | Extra |
-------------------------------------------+
| test | char(4) | | | | |
-------------------------------------------+
In this example, the type of the test column is CHAR(4).
NULLIF(expr1,expr2)
Returns NULL if expr1 = expr2 is true, otherwise returns expr1. This is the same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2);
-> 1
Note that MySQL evaluates expr1 twice if the arguments are not equal.
Previous / Next / Up / Table of Contents
User Comments
Posted by I W on July 12 2005 5:52pm [Delete] [Edit]
Don't use IFNULL for comparisons (especially not for Joins)
(example:
select aa from a left join b ON IFNULL(a.col,1)=IFNULL(b.col,1)
It's terrible slow (ran for days on two tables with approx 250k rows).
Use <=> (NULL-safe comparison) instead. It did the same job in less than 15 minutes!!
Posted by [name withheld] on November 10 2005 12:12am [Delete] [Edit]
IFNULL is like oracle's NVL function (these should help people searching for NVL() ..)
Posted by Philip Mak on May 26 2006 7:14am [Delete] [Edit]
When using CASE, remember that NULL != NULL, so if you write "WHEN NULL", it will never match. (I guess you have to use IFNULL() instead...)
Posted by Marc Grue on June 24 2006 2:03pm [Delete] [Edit]
You can ORDER BY a dynamic column_name parameter using a CASE expression in the ORDER BY clause of the SELECT statement:
CREATE PROCEDURE `orderby`(IN _orderby VARCHAR(50))
BEGIN
SELECT id, first_name, last_name, birthday
FROM table
ORDER BY
-- numeric columns
CASE _orderby WHEN 'id' THEN id END ASC,
CASE orderby WHEN 'desc id' THEN id END DESC,
-- string columns
CASE orderby WHEN 'firstname' THEN first_name WHEN 'last_name' THEN last_name END ASC,
CASE orderby WHEN 'descfirst_name' THEN first_name WHEN 'desc_last_name' THEN last_name END DESC,
-- datetime columns
CASE _orderby WHEN 'birthday' THEN birthday END ASC,
CASE orderby WHEN 'desc birthday' THEN birthday END DESC;
END
Since the CASE expression returns the "compatible aggregated type of all return values", you need to isolate each column type in a separate CASE expression to get the desired result.
If you mixed the columns like
CASE _orderby
WHEN 'id' THEN id
WHEN 'first_name' THEN first_name
...etc...
END ASC
.. both the id and first_name would be returned as a string value, and ids would be sorted as a string to '1,12,2,24,5' and not as integers to '1,2,5,12,24'.
Note that you don't need a "ELSE null" in the CASE expressions, since the CASE expression automatically returns null if there's no match. In that case, you get a "null ASC" in your ORDER BY clause which doesn't affect the sort order. If for instance orderby is 'descfirst_name', the ORDER BY clause evaluates to:
ORDER BY null ASC, null DESC, null ASC, first_name DESC, null ASC, null DESC
Effectively the same as "ORDER BY first_name DESC". You could even add a new set of CASE expressions for a second order column (or more..) if you like.
Add your own comment.What is that post supposed to be?
-
Snow Leopard, PHP, MySQL, Apache and Wordpress!
Hi there,
It's taken me most of the day to work this out, so I thought I should post about it somewhere and here, on the Apple forum, is the ideal location.
I'm a web developer and love the fact that my MacBook works out of the box with a Unix webserver and with little effort, I was able to set up PHP and MySQL on it. I was delighted to hear that the new Snow Leopard was shipping with the latest and greatest of both. It wasn't quite that easy when it came down to running my test sites, one of which I'm working on is a Wordpress site. Far from being daunting, the solutions to the problems I had were quite simple. The issues arose from the OS not having much exposure yet and not many people having posted their experiences on the web. It was just time consuming.
I should mention at this point that this does require some tinkering with Terminal, but not so much as to cause damage if you do something wrong.
First off Apache. Thankfully this is as stable as it always has been. All this requires to activate it is to visit System Preferences > Sharing and switch on Web sharing. Bish-bosh, job done.
Next off PHP. If you open a Safari window and run your phpinfo.php file (where ever you have it saved. If you don't, they're out there, it's a tiny piece of code which you can use to find out your current php setup). You'll find that everything is superb! PHP 5.3! Excellent! Hang on, scroll down to the date and time section. Whoa! What's this big fat warning here.
That warning my friend, has been the bane of my misery all day. Wordpress hates it. HATES IT! It causes no end of grief. So what's the multi step, multi program solution?
Open your php.ini file and add the line:
date.timezone=Country/City
(do a Google search for PHP Timezones and you will get the exact settings. It's not so good that it understands every city in the world. My setting was Europe/Dublin).
That's all. This will solve your issue of the timezone error everywhere. Stop and start Apache (System Preferences > Sharing, tick off and tick back on Web Sharing) and hey presto, error is gone.
Wait a minute, where the **** is my php.ini file. Unfortunately this is where you have to get your hands dirty. Your php.ini file is a system file which resides in the /etc/ folder. Open a terminal window and type exactly the following:
cd /etc/
cp php.ini.default php.ini
This makes the php.ini file from the default. This protects the original so if you ever need to create a new copy or if you make a mistake in the next steps, you can start again.
Next I'm going to tell you how to edit this file. This uses a program called vi (there are GUI editors out there that will save you this heartache, so if anyone knows any, please post in response. I think TextWrangler is one).
First you need to set the php.ini file so you can edit it. Type in exactly as follows:
sudo chmod 777 php.ini
Sudo is the superuser commmand. It may not be needed, but stick it in anyway. If you are asked for a password, put in your normal password (that you would be asked for say if you were installing something you downloaded).
At the next prompt, type in:
vi php.ini
This will open the php.ini file. Using the up and down keys, find a blank line in the file. You will notice that alot of the lines start with ';'. These are commented lines. Once you find a blank line, press 'i' to insert text. Your screen will now say '-- INSERT --' at the bottom in red. Type the following in exactly (you will NOT be able to cut and paste):
; Set PHP Default Timezone
date.timezone=Europe/Dublin
Substitute "Europ/Dublin" with your own timezone. When you are done, press escape. Now type in the following:
:wq!
The colon is important (not a typo on my part) as this tells vi you are going to run a command. You should now be back at your prompt. Now you need to reset the permissions on the file. Type the following:
sudo chmod 444 php.ini
And that's it. That's your PHP setup and finished. If you run your phpinfo.php file now, you should see your timezone under the date and time where you were getting the error before.
Now the MySQL. This is a bit of fun because, even though MySQL ships with the system, it's not exactly set up correctly! So once again into terminal.
This time go to the local directory:
cd /usr/local/
If you type in:
ls -al
You'll get a directory listing. This has the MySQL folder listed as mysql-5.0.77-osx10.5-x86 (or something! I did that from memory!). This IS the MySQL folder but if you, like me, had previously set the MySQL Preference Pane in your System Preferences, then it won't be able to access this. Type the following command:
sudo cp -R /usr/local/mysql* /usr/local/mysql
This should copy everything into a folder called mysql. It takes a couple of seconds (first time on my machine it was a good 20 seconds) to run so be patient. Now you need to do the following:
sudo chown mysql:mysql /usr/local/mysql
This sets the owner and group of the mysql files to 'mysql'. If you go back to your MySQL preference pane in System Preferences, you should now be able to start it (something weird about it makes it require to close and reopen the System Preferences window before it can open the MySQL pref pane. This is normal, just click ok).
The bit that got me here, is that I thought that my activation of the MySQL was actually a new install. I tried everything to change the root user and password for MySQL but in fact, if you had it installed on Leopard, prior to upgrading to Snow Leopard, all your users and passwords are the same. If you HAVEN'T installed it before, I recommend you read the Post Installation Customisation (section 2.3) on the manual for MySQL 5.1 on http://www.mysql.com
So that's about it. All that remains is to test Wordpress. I have phpmyadmin installed (I've heard CocoaMySQL is very good, like iTunes for db's so I'm gonna check that out later) and was able to create the new wordpress database. I changed the settings in the wp-configure.php file to match my setup but nothing worked. I changed the host from '127.0.0.1' back to 'localhost' (a common complaint of the wordpress setup) but no joy. Then I changed the host back to '127.0.0.1' and added the port :3306 (so the full host is '127.0.0.1:3306') and bingo, the install worked, my database setup and my test site worked.
So that's it! Many of you out there will say, why didn't you just use MAMP. I did use MAMP, but I also got the Timezone issues and it took far more tinkering and hacking to make it work. I decided that, as my lovely MacBook now running lovely Snow Leopard had the lovely newest versions of PHP and MySQL installed, I'd rather get them working than use a runaround with MAMP. I'm a happier camper for it.
I hope this helps some of you out there. I don't personally have a blog yet, but when I do, I'll post this up there for all to access. I may even add screen shots!!! But seriously, I hope this helps you all out with your installs. It's so handy to have all this stuff straightaway with Snow Leopard, it's just a matter of getting it to work.
All the best now,
THmmmm... I did a clean drive install of Snow Leopard because I used to do it once a year with Windows and hadn't done it in 3 with my MBP.
First, my httpd.conf file had the line enabling PHP commented out, so when I went to see my simple file with phpinfo(), I saw the source. Saw your post, thought it was the timezone, fixed that (which will probably make wordpress happy when I get it running), and it still didn't work. Looked at the httpd.conf file, found that PHP was disabled by default, fixed that line, restarted the server, and my phpinfo() worked like a charm.
Also if you want to edit config files, I use TextWrangler's "open hidden files" option.
But... I have no /usr/local directory at all. Doesn't exist on my machine. Checked the options in the base install and MySQL isn't offered as an option. Checked the optional installs and MySQL isn't there. Even letting spotlight search for hidden files, the only files with MySQL in their name were from php scripts in my web folders.
There's some stuff about installing/compiling from source.
http://hivelogic.com/articles/compiling-mysql-on-snow-leopard/
Dunno if I want to go down that road quite yet. -
Generating CSV file with column names and data from the MySQL with JAVA
Hi all,
Give small example on ...
How can I add column names and data to a CSV from from MySQL.
like
example
sequence_no, time_date, col_name, col_name
123, 27-apr-2004, data, data
234, 27-apr-2004, data, data
Pls give small exeample on this.
Thanks & Regards
Rama KrishnaHello Rama Krishna,
Check this code:
Example below exports data from MySQL Select query to CSV file.
testtable structure
CREATE TABLE testtable
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
text varchar(45) NOT NULL,
price integer not null);
Application takes path of output file as an argument.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class automateExport {
public static void main(String[] args) {
DBase db = new DBase();
Connection conn = db.connect(
"jdbc:mysql://localhost:3306/test","root","caspian");
if (args.length != 1) {
System.out.println(
"Usage: java automateExport [outputfile path] ");
return;
db.exportData(conn,args[0]);
class DBase {
public DBase() {
public Connection connect(String db_connect_str,
String db_userid, String db_password) {
Connection conn;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(db_connect_str,
db_userid, db_password);
} catch(Exception e) {
e.printStackTrace();
conn = null;
return conn;
public void exportData(Connection conn,String filename) {
Statement stmt;
String query;
try {
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
//For comma separated file
query = "SELECT id,text,price into OUTFILE '"+filename+
"' FIELDS TERMINATED BY ',' FROM testtable t";
stmt.executeQuery(query);
} catch(Exception e) {
e.printStackTrace();
stmt = null;
Greetings,
Praveen Gudapati
Maybe you are looking for
-
So, with all the changes on my network I seem to have forgotten all the basic information I have learned over time. I have my 3560 as the "core" switch/router running ospf. Everything works fine on the switch itself. But on port G0/21 is my ASA firew
-
How can i get my laptop screen to display on a second monitor after closing the laptop
I have a 13" MacPro, love it, but its display is a little small for how far away i sit at my desk. I have a second 21" monitor that i would like to use for this purpose, but whenever i close the laptop screen it shuts down the signal for the second s
-
Manipulating data in Excel inplace via ALV grids
Hi everybody, I want to create a report which displays data in an Excel file (Excel inplace). To solve the problem I have created a custom layout and uplodaded it via the report BCALV_BDS_MAINTENANCE to the BDS. The written report loads the data into
-
Solution (or posible) to undetected Ipods!
Important note: The author of this message doesn't have english as its natal languaje, so there may be some errors especially on verb conjugations. Continue reading: I had the same problems with my brother's new incredible Ipod Video. He almost not k
-
Guys, I have a question about Job control on LBWE screen. When I click on it. It gives user multiple options. Those options are self explainatory. However, I would like to know for instance if I schedule a job to start at 2:00 PM on November 1st,