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,
    JJ

    Thanks 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.

  • Terminal & MySQL Syntax

    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 Jeukens

    It 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 RAM

    okay, 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?

  • Error Message in Terminal: unknown variable 'datadir=/usr/local/mysql/data'

    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,
    Shelley

    Shelley 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 Taraske

    Hi 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,
    T

    Hmmmm... 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 Krishna

    Hello 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

  • Routing issue 3560

    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

  • Job control in R/3 System

    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,