��������  ����Linux

mysql-logo.png (3082 bytes)MySQL���IJο��ֲ�

���룺����(yanzi)       ��ҳ��http://aosp.me


��һ��, ǰһ��, ��һ��, ���һ����Ŀ¼.


18 ����ͳ�������

18.1 ���MySQL���DZ�����ô��

����MySQL�ڷ�������֮ǰ��������ƽ̨�ϱ����ԡ��Ⲣ����ζ����MySQL��û���κδ��󣬵�������д��������Ǻ��ٵIJ��Һ����ѷ��֡��������һ�����Ⲣ������㳢���ҳ�������ʲô�ݻ������ϵͳ�����������а����ģ���Ϊ�㽫��һ�����û���ʹ�����������޸���

������Ӧ�������ҳ�����mysqld�ػ������Ƿ���������������Ƿ�����Ŀͻ��йء��������mysqladmin version������mysqld����������ִ���˶೤ʱ�䣬���mysqld���ˣ���������ļ���mysql-data-directory/'hostname'.err�����ҵ���ԭ��

��Ϊ����֪��һЩ����Ϊʲô�������������ż��Ϊ�����˹����Ķ����Ƿ�ʹ��������볢���������飺

  • ��mysqladmin shutdownֹͣmysqld�ػ����̣������б�������myisamchk --silent --force */*.MYI������mysqld�ػ������̡��⽫��֤���һ���ɾ���״̬���С���13 ά��MySQL��װ��
  • ʹ��mysqld --log�������Ŵ���־��Ϣȷ���Ƿ���ij���ض��IJ�ѯɱ���˷�������ȫ�������95%���ض��IJ�ѯ�йأ�ͨ����������־�ļ��о���MySQL����֮ǰ������ѯ֮һ����Ҳ������ʹ�����й�����֤����
    • ֹͣMySQL�ػ�����(��mysqladmin shutdown)��
    • ��MySQL���ݿ�Ŀ¼�����ļ���һ�����ݡ�
    • ��myisamchk -s */*.MYI��������֤���б�����ȷ�ġ�������κα����𻵣���myisamchk -r path-to-table.MYI�޸�����
    • ��MySQL����Ŀ¼ɾ��(������)�κξɵ���־�ļ���
    • ��safe_mysql --log������������
    • ���mysqld���������������ͨ���ָ����ݲ�ִ��mysql < mysql-log-file�����������Ƿ���һ���ض��IJ�ѯ����ġ���Ȼ�����ͨ����safe_mysqld --data=path-to-backup-directory������һ��MySQL����������ij������Ŀ¼�����DZ�׼MySQL���ݿ�Ŀ¼��������IJ��ԡ�
  • �������˻�׼����������Ӧ�úܺõز���MySQL����Ҳ�������Ӵ���ģ�����Ӧ�ó��򣡻�׼�������Դ����ַ�����bench��Ŀ¼���ҵ�����Զ����Ʒַ��������MySQL��װĿ¼����sql-bench��Ŀ¼��
  • ��һ��fork_test.pl��fork2_test.pl��
  • ���κδ������ļ���mysql-data-directory/'hostname'.err����
  • ���������MySQL�Ա���ԣ�����������ռ����ܵĴ�����Ϣ�������ס�ʹ��--with-debugѡ���configure��������MySQLȻ�����±��롣��G.1 ����һ�� MySQL ��������
  • Ϊ���Զ�����MySQLʹ������һ����ȫ���ڴ�������Ա��ܷ���һЩ������Ҳ�ṩ�������ڷ���ʲô�Ĵ��������
  • ��Ϊ��IJ���ϵͳʹ�������µIJ�����
  • ʹ��mysql��--skip-lockingѡ��.��һЩϵͳ�ϣ�lockd��������������ȷ������--skip-lockingѡ�����mysqld��ʹ���ⲿ����������ζ���㲻����ͬһ����������������mysqld���������������ʹ��myisamchk����һ��ҪС�ģ���������Ϊ�˲�������ѡ��������档��
  • ��mysqld�����������е�û�з�Ӧʱ���㳢�Թ�mysqladmin -u root processlist����ʱmysqld���Ǻ��޷�Ӧ�����������������Ϊ������������������õ����ӣ���������ڲ��������⡣mysqladmin processlist��������Щ����½�ͨ�����Խ���һ�����ӣ��������ṩ�йص�ǰ������������״̬��������Ϣ��
  • ��������������ѯʱ����һ��������������������mysqladmin -i 5 status������ͳ�ơ�
  • �������в��裺
    1. ͨ��gdb��������������)����mysqld��
    2. ������IJ��Խű���
    3. ��mysqld�����㵹(core dump)����back������������еĻ���-backtrace����)��
  • ������һ��Perl�ű�ģ�����Ӧ�ó�����ǿ��MySQL��������ֲ���ȷ��
  • ��һ����ʽ�Ĵ��󱨸档��2.3 ��α�����������������Ҫ��ƽ������ϸ����ΪMySQLΪ�ܶ��˵Ĺ��������±����Ķ�������ֻ��������ļ������(���磬������ض�ϵͳ���йص�һ������)��
  • �����������о��ж�̬�����еı��йأ������㲻ʹ��BLOB/TEXT��(���ǽ�VARCHAR��)���������ALTER TABLE���Ž�ȫ��VARCHAR��ΪCHAR���⽫ǿ��MySQLʹ�ù̶��ߴ���С��̶��ߴ����ռ�ݺ�С�Ķ���ռ䣬���Ǹ������̱�������ǰ��̬�еĴ����� TCX ����ʹ��3 ���ʱ�䣬û���κ����⣬���Ǵӱ����Ͻ�����̬���ȵ��жԴ�������У����������������а���������һ�¿�����һ�������⣡

18.2 ʹ��MySQLʱ��һЩ��������

18.2.1 MySQL server has gone away����

��С��Ҳ�漰�й�Lost connection to server during query�Ĵ���

��MySQL server has gone away���������ԭ���Ƿ�������ʱ�˲��ҹر������ӡ�ȱʡ�أ����û�����鷢������������ 8��Сʱ��ر����ӡ����������mysqldʱͨ������wait_timeout�����ı�ʱ�����ơ�

�����ͨ��ִ��mysqladmin version���Ҽ����������е�ʱ�������MySQL��û������

�������һ���ű�����ֻ���ٷ�����ѯ�ÿͻ�����һ���Զ����������ӡ�

���������£���ͨ���ܻ�����д������(��õ�����OS��ص�)��

CR_SERVER_GONE_ERROR �ͻ����ܷ���һ���������������
CR_SERVER_LOST ��д������ʱ���ͻ�û�г�����������û�еõ��������һ�������Ĵ�(���κδ�)��

���������������Ͳ���ȷ�Ļ�̫��IJ�ѯ����Ҳ���ܵõ���Щ�������mysqld�õ�һ��̫��������İ�������Ϊ�ͻ������˲��ر����ӡ��������Ҫ�ϴ�IJ�ѯ(���磬��������ڴ����ϴ��BLOB��)�������ʹ��-O max_allowed_packet=#ѡ��(ȱʡ1M)����mysqld�����Ӳ�ѯ���ơ�������ڴ水����䣬����mysqldֻ�����㷢���ϴ��ѯʱ��mysqld���뷵�ؽϴ�Ľ����ʱ����ʹ�ø�����ڴ棡

18.2.2 Can't connect to [local] MySQL server����

һ��MySQL�ͻ��������ֲ�ͬ�ķ�ʽ����mysqld��������Unix�׽��֣���ͨ�����ļ�ϵͳ�е�һ���ļ�(ȱʡ��/tmp/mysqld.sock��)�������ӣ���TCP/IP����ͨ��һ���˿ں����ӡ�Unix�׽��ֱ�TCP/IP���죬����ֻ����������ͬһ̨������ϵķ�����������㲻ָ���������������ָ�������������localhost��ʹ��Unix�׽��֡�

����(2002��Can't connect to ...ͨ����ζ��û��һ��MySQL������������ϵͳ�ϻ���ͼ����mysqld������ʱ��������ʹ��һ��������׽����ļ���TCP/IP�˿ڡ�

�ɼ��(ʹ��ps)����ķ���������һ����Ϊmysqld�Ľ������������û���κ�mysqld���̣���Ӧ������һ������4.15.2 ����MySQL��������������

���һ��mysqld�����������У������ͨ��������Щ��ͬ����������������(��Ȼ���˿ںź��׽���·������������İ�װ���Dz�ͬ��)��

shell> mysqladmin version
shell> mysqladmin variables
shell> mysqladmin -h `hostname` version variables
shell> mysqladmin -h `hostname` --port=3306 version
shell> mysqladmin -h 'ip for your host' version
shell> mysqladmin --socket=/tmp/mysql.sock version

ע��hostname����ʹ�÷����š�`�����������š�'������Щ����hostname�����������ǰ������)�������mysqladmin�����С�

���ǿ������Can't connect to local MySQL server�����һЩԭ��

  • mysqld�������С�
  • ������ʹ��MIT-pthreads��һ��ϵͳ�����С��������������һ��û��ԭ���̵߳�ϵͳ�ϣ�mysqldʹ�� MIT-pthreads ����������4.2 ��MySQL֧�ֵIJ���ϵͳ��Ȼ����MIT-pthreads��֧��Unix�׽��֣���˵������������ʱ��������һ��ϵͳ�ϣ������DZ�����ȷ��ָ��������������ʹ����������鵽�����������ӣ�
    shell> mysqladmin -h `hostname` version
    
  • ij��ɾ����mysqldʹ�õ�Unix�׽���(ȱʡ��/tmp/mysqld.sock��)���������һ��cron����ɾ����MySQL�׽���(���磬һ���Ѿ��ļ�����/tmp��Ŀ¼��ɾ��������)�������ǿ�������mysqladmin version���Ҽ��mysqladmin������ͼʹ�õ��׽���ȷʵ���ڡ�����������£��޸�������ɾ��cron�������ɾ����mysqld.sock ���׽��ַ��������ط������������������MySQL����ʱָ��һ����ͬ���׽��ֵص㣺
    shell> ./configure --with-unix-socket-path=/path/to/socket
    

    ��Ҳ����ʹ��--socket=/path/to/socketѡ������safe_mysqld�����������MySQL�ͻ�ǰ���û�������MYSQL_UNIX_PORTΪ�׽���·�����������--socket=/path/to/socketѡ������mysqld�������������ı��˷��������׽���·��������Ҳ����֪ͨMySQL�ͻ�������·��������������ͨ�����û�������MYSQL_UNIX_PORTΪ�׽���·���������ṩ�׽���·������Ϊ�ͻ��IJ�������������������������׽��֣�

    shell> mysqladmin --socket=/path/to/socket version
    
  • ������ʹ�� Linux���߳��Ѿ�����(�����㵹��)������������У������ɱ������mysqld�߳�(����������һ���µ�MySQL������֮ǰ��������mysql_zap�ű�������18.1 ���MySQL���DZ�����ô����

�����õ�����Can't connect to MySQL server on some_hostname������Գ������в����ҳ�������ʲô��

  • ͨ��ִ��telnet your-host-name tcp-ip-port-number���Ұ����λس������������Ƿ��������С������һ��MySQL����������˿��ϣ���Ӧ�õõ�һ�������������е�MySQL�������İ汾�ŵ�Ӧ�������õ�������telnet: Unable to connect to remote host: Connection refused��һ��������ôû�з�������ʹ�õĶ˿������С�
  • �������ӱ��ػ����ϵ�mysqld�ػ����̣�����mysqladmin variables���mysqld������ʹ�õ�TCP/IP�˿�(����port)��
  • ������mysqld������û����--skip-networkingѡ��������

18.2.3 Host '...' is blocked����

�����õ���������һ������

Host 'hostname' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'

����ζ�ţ�mysqld�Ѿ��õ��˴���(max_connect_errors)������'hostname'������;���ж��˵�����������max_connect_errors��ʧ�������mysqld�϶�������(������һ���ڿ͵Ĺ���)��������ֹ��վ���һ�������ӣ�ֱ��ij��ִ������mysqladmin flush-hosts��

ȱʡ�أ�mysqld��10�����Ӵ��������һ̨�����������ͨ�����������������������׵ص�������

shell> safe_mysqld -O max_connect_errors=10000 &

ע�⣬�Ը���������������õ�����������Ϣ����Ӧ�����ȼ���������TCP/IP������û�����⡣������TCP/IP���Ӳ������У�����max_connect_errors������ֵ����Ҳ�����а�����

18.2.4 Too many connections����

���������������MySQLʱ����õ�����Too many connections������ζ���Ѿ���max_connections���ͻ�������mysqld��������

�������Ҫ��ȱʡ(100)��������ӣ���ô��Ӧ������mysqld���ø���� max_connections ����ֵ��

ע�⣬mysqldʵ��������(max_connections+1)���ͻ����ӡ����һ��������Ϊһ����ProcessȨ�޵��û������ġ�ͨ���������Ȩ�޸�һ���û�(���Dz�Ӧ����Ҫ��)�������Ȩ��һ������Ա���Ե�¼����ʹ��SHOW PROCESSLIST�ҳ�ʲô���ܳ�������7.21 SHOW�䷨(�õ������е���Ϣ����

18.2.5 Out of memory����

����㷢����ѯ���ҵõ�����������Ĵ���

mysql: Out of memory at line 42, 'malloc.c'
mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)
ERROR 2008: MySQL client ran out of memory

ע�⣬����ָ����MySQL����mysql����������ԭ��ܼ򵥣��ͻ�û���㹻���ڴ�洢ȫ�������

Ϊ������������⣬���ȼ����IJ�ѯ�Ƿ���ȷ����Ӧ�÷�����ô����У������������������������ʹ��mysql --quick����ʹ��mysql_use_result()����������ϡ��⽫���ٵĸ��������˿ͻ���(ֻ�Ƿ���������)��

18.2.6 Packet too large����

��һ��MySQL�ͻ���mysqld�������õ�һ����max_allowed_packet���ֽڳ��İ���������һ��Packet too large������ֹ���ӡ�

���������ʹ��mysql�ͻ��������ͨ����mysql --set-variable=max_allowed_packet=8Mָ��һ������Ļ������������ͻ�����

���������ʹ�ò�������ָ��������С�������ͻ�(���� DBI)������Ҫ��������������ʱ���ð���С�������ʹ��mysqld��������ѡ������max_allowed_packetΪһ������ijߴ硣���磬�������������һ��ȫ����BLOB����һ�ű��У��㽫��Ҫ��--set-variable=max_allowed_packet=24Mѡ����������������

��

18.2.7 The table is full����

������������ڴ���ʱ����ñ�tmp_table_size�ֽڴ�ʱ��Ϊ�˱���������⣬�����ʹ��mysqld��-O tmp_table_size=#ѡ����������ʱ���Ĵ�С�������㷢�������ʵIJ�ѯ֮ǰʹ��SQLѡ��SQL_BIG_TABLES����7.25 SET OPTION�䷨��

��Ҳ����ʹ��--big-tablesѡ������mysqld������Ϊ���в�ѯʹ��SQL_BIG_TABLES��ȫ��ͬ��

18.2.8 Commands out of sync in client����

���������Ŀͻ������еõ�Commands out of sync; You can't run this command now���������Դ���Ĵ�����ÿͻ�������

����ܷ��������磬���������ʹ��mysql_use_result()���������Ѿ�������mysql_free_result()֮ǰ��ͼִ���²�ѯ���������mysql_use_result()��mysql_store_result()֮����ͼִ�з������ݵ�2����ѯ����Ҳ���ܷ�����

18.2.9 Ignoring user����

�����õ����д���

Found wrong password for user: 'some_user@some_host'; Ignoring user

����ζ����mysqld����ʱ�������ٴ�װ��Ȩ�ޱ�ʱ������user�����ҵ���һ����һ����Ч�������Ŀ���������Ŀ�򵥵ر�Ȩ��ϵͳ���ԡ�

���ܵ�����������ԭ���������

  • �������������һ����һ���ϵ�user�����°汾mysqld�������ͨ��ִ��mysqlshow mysql user���������ֶ��Ƿ����� 16���ַ��������������������������ͨ������scripts/add_long_password�ű��������������
  • �û���һ����ʽ�Ŀ���(8���ַ���)������ûʹ��--old-protocolѡ������mysqld����һ���¿��������user���е��û�����--old-protocol����mysqld��
  • ��û��ʹ��PASSWORD()��������user����ָ����һ�����ʹ��mysql��һ���¿��������user���е��û���ȷ��ʹ��PASSWORD()������
    mysql> update user set password=PASSWORD('your password')
               where user='XXX';
    

18.2.10 Table 'xxx' doesn't exist����

�����õ�����Table 'xxx' doesn't exist��Can't find file: 'xxx' (errno: 2)������ζ���ڵ�ǰ���ݿ���û����Ϊxxx�ı����ڡ�

ע�⣬��ΪMySQLʹ��Ŀ¼���ļ��洢���ݿ�ͱ������ݿ�ͱ����������ִ�Сд��������Win32�ϣ����ݿ�ͱ����������ִ�Сд�ģ������ڲ�ѯ�ж����б������ñ���ʹ����ͬ�Ĵ�Сд����

�������SHOW TABLES������ڵ�ǰ���ݿ������ĸ�������7.21 SHOW�䷨(�õ������е���Ϣ����

18.3 MySQL��������һ������Ĵ���

������һ��������������ʱ��MySQL���������飺

  • ��ÿ���Ӽ��һ�ο��Ƿ����㹻�ռ�д�뵱ǰ�С�������㹻�Ŀռ䣬������������ʲô���顣
  • ÿ6���������йش�������ľ���д����־�ļ���

Ϊ�˻���������⣬����Բ�ȡ�����ж���

  • ��������ֻ���ͷ��㹻�Ŀ��д��̿ռ��Ա�������м�¼��
  • �����̣߳�����뷢һ��mysqladmin kill���̡߳�����һ�μ�����ʱ���߳̽�������(��1������)��
  • ע�⣬�����߳̿������ڵȴ����𡰴�������������ı���������м����������ġ����̣߳�ɱ�����ڵȴ���������������Ǹ��߳̽����������̼߳�����

18.4 ��δ�һ���ı��ļ�����SQL����

һ��أ�mysql�ͻ��������Ե�ʹ�ã���������

shell> mysql database

Ȼ����Ҳ���԰����SQL�������һ���ļ��в��Ҹ���mysql�Ӹ��ļ���ȡ�����롣Ҫ��������������һ���ı��ļ���text_file��������������Ҫִ�е����Ȼ��������������mysql��

shell> mysql database < text_file

��Ҳ��������һ��USE db_name�����ı��ļ�������������£�����������ָ�����ݿ����Dz���Ҫ�ģ�

shell> mysql < text_file
��12.1 ��ͬ��MySQL��������� 

18.5 MySQL���Ķ��洢��ʱ�ļ�

MySQLʹ��TMPDIR����������ֵ��Ϊ�洢��ʱ�ļ���Ŀ¼��·�����������û������TMPDIR��MySQLʹ��ϵͳȱʡֵ����ͨ������/tmp������/usr/tmp����������������ʱ�ļ�Ŀ¼���ļ�ϵͳ̫С����Ӧ�ñ༭safe_mysqld�趨TMPDIRָ�������㹻�ռ��һ���ļ�ϵͳ����Ҳ����ʹ��mysqld��--tmpdirѡ��Ŀ������ʱĿ¼��

MySQL�ԡ������ļ�������������ʱ�ļ����Ᵽ֤�����mysqld����ֹ����ʱ�ļ�Ҳ����ɾ����ʹ�������ļ���ȱ�����㽫������һ�������ʱ�ļ���������ʱ�ļ�Ŀ¼���ڵ��ļ�ϵͳ��

������(ORDER BY��GROUP BY)ʱ��MySQLͨ��ʹ��һ����������ʱ�ļ��������̿ռ������ǣ�

(�洢�����ij��� + sizeof (���ݿ�ָ��))
* ƥ�������
* 2

sizeof(���ݿ�ָ��)ͨ����4��������δ����ȷʵ�ܴ�ı��������ӡ�

��һЩSELECT��ѯ��MySQLҲ������ʱSQL������Щû������������SQL_*����ʽ�����֡�

ALTER TABLE��OPTIMIZE TABLE��ԭ���ݿ����ͬһ��Ŀ¼�д���һ����ʱ����

18.6 ����������/tmp/mysql.sock ������ɾ��

�������������⣬��ʵ���κ��˿���ɾ��MySQLͨѶ�׽�����/tmp/mysql.sock������Unix�Ĵ�����汾�ϣ�����ͨ��Ϊ������sticky��t��λ�����������/tmp���ļ�ϵͳ����Ϊroot��¼�������������飺

shell> chmod +t /tmp

�⽫���������/tmp���ļ�ϵͳʹ���ļ����������ǵ������߻򳬼��û�(root)ɾ����

����ִ��ls -ld /tmp���stickyλ�Ƿ����ã�������һλ����λ��t����λ�������ˡ�

18.7 Access denied����

��6.6 Ȩ��ϵͳ��ι����������ر�Ҫ��6.13 ����Access denied�����ԭ����

18.8 ������Ϊһ��һ���û�����MySQL

MySQL������mysqld�ܱ��κ��û����������С�Ϊ�˽�mysqld����Unix�û�user_name�����У���������������飺

  1. ������������У�ֹͣ������(ʹ��mysqladmin shutdown)��
  2. �ı����ݿ�Ŀ¼���ļ��Ա�user_name��Ȩ�޶���д�ļ�(�������Ҫ��ΪUnix��root�û���������)��
    shell> chown -R user_name /path/to/mysql/datadir
    

    �����MySQL����Ŀ¼�е�Ŀ¼���ļ��Ƿ������ӣ���Ҳ����Ҫ˳����Щ���Ӳ��ı�����ָ���Ŀ¼���ļ���chown -R���ܸ���������ӡ�

  3. ��user_name�û������������������������ʹ��MySQL 3.22���Ժ�汾����Unix root�û�����mysqld��ʹ��--user=user_nameѡ�mysqld���ڽ����κ�����֮ǰ�л�����Unix user_name�û����С�
  4. �����ϵͳ����������ʱ����ʹ��mysql.server�ű�����mysqld����Ӧ�ñ༭mysql.server��su���û�user_name����mysqld����ʹ��--userѡ�����mysqld�������ı�safe_mysqld�DZ�Ҫ�ġ���

���ڣ����mysqld����Ӧ��������ΪUnix�û�user_name���У���������á�������һ������û�б仯��Ȩ�ޱ������ݡ�ȱʡ ��(���������˽ű�mysql_install_db��װ��Ȩ�ޱ���)��MySQL�û�root��Ψһ�д�ȡmysql���ݿ�򴴽����������ݿ�Ȩ�޵��û���������ı�����ЩȨ�ޣ�����������Ȼ���֡�������Ϊһ��Unix�û�������root��¼ʱ���ⲻӦ����ֹ����ΪMySQL root�û�����ȡMySQL��ֻҪΪ�ͻ�����ָ��-u root��ѡ�

ע��ͨ�������������ṩ-u root����Ϊroot��ȡMySQL������ΪUnix root�û�������Unix�û�����MySQLû�й�ϵ��MySQL�Ĵ�ȡȨ�޺��û�����Unix�û���������ȫ�ֿ��ġ�Ψһ��Unix�û����йص��ǣ�����������һ���ͻ�����ʱ���㲻�ṩһ��-uѡ��ͻ�����ͼʹ�����Unix��¼����Ϊ���MySQL�û����������ӡ�

������Unix������������ȫ�������Ӧ�������ڴ�ȡ����ΪMySQL root�û�����һ�������������̨��������һ���ʺŵ��κ��û�������mysql -u root db_name��������ϲ�������κ����顣

18.9 ������������һ�����ǵĿ���

�����������MySQL��root�û��Ŀ������������й��ָ̻�����

  1. ͨ������һ��kill������kill -9)��mysqld���������ر�mysqld��������pid ��������һ��.pid�ļ��У�ͨ����MySQL���ݿ�Ŀ¼�У�
    kill `cat /mysql-data-directory/hostname.pid`
    

    �������һ��UNIX root�û������з���������ͬ�û��������

  2. ʹ��--skip-grant-tablesѡ������mysqld��
  3. ��mysql -h hostname mysql����mysqld������������һ��GRANT����ı�����7.26 GRANT��REVOKE�䷨����Ҳ������mysqladmin -h hostname -u user password 'new password' ���С�
  4. ��mysqladmin -h hostname flush-privileges����SQL����FLUSH PRIVILEGES��װ��Ȩ�ޱ���

18.10 �ļ�����Ȩ������

����������ļ������йص����⣬���磬������㴴��һ�ű�ʱ��mysql�������д�����Ϣ��

ERROR: Can't find file: 'path/with/filename.frm' (Errcode: 13) 

��ô��������mysqld����ʱ����������UMASK�������ò���ȷ��ȱʡ��umaskֵ��0660���������������safe_mysqld�ı�����Ϊ��

shell> UMASK=384  # = 600 in octal
shell> export UMASK
shell> /path/to/safe_mysqld &

18.11 �ļ�û�ҵ�

������MySQL�õ�ERROR '...' not found (errno: 23), Can't open file: ... (errno: 24)���κ�������errno 23��errno 24�Ĵ�������ζ�ţ���û��ΪMySQL�����㹻���ļ�������������ʹ��perrorʵ�ó���õ�����ź�����ʲô��������

shell> perror 23
File table overflow
shell> perror 24
Too many open files

�����������mysqld������ͼͬʱ���ִ�̫����ļ�����Ҳ���Ը���mysqldһ�β�����ô����ļ���������mysqld�ɵõ����ļ�������������

Ϊ�˸���mysqldһ�α��ִ򿪸��ٵ��ļ��������ͨ��ʹ��safe_mysqld��-O table_cache=32ѡ�ȱʡֵ��64)ʹ�������С����Сmax_connectionsֵҲ�����ٴ��ļ�������(ȱʡֵ��90)��

Ҫ���ı�mysqld���õ��ļ��������������޸�safe_mysqld�ű����ű�����һ��ע���˵���ulimit -n 256�������ɾ��'#'�ַ���ȥ�����е�ע�ͣ����Ҹı�����256�ı�Ϊmysqld���õ��ļ���������������

ulimit�������ļ�������������������ֻ�ܵ�����ϵͳǿ�ӵ����ơ��������Ҫ����ÿ�����̿��õ��ļ�������������OS���ƣ��μ���IJ���ϵͳ�ĵ���

ע�⣬���������tcsh��ǣ�ulimit������������������ǰ����ʱ��tcshҲ�����治��ȷ��ֵ������������£���Ӧ����sh����safe_mysqld��

18.12 ʹ��DATE�е�����

һ��DATEֵ�ĸ�ʽ��'YYYY-MM-DD'������ANSI SQL��������������ʽ����Ӧ����UPDATE����ʽ��SELECT����WHERE�Ӿ���ʹ�������ʽ�����磺

mysql> SELECT * FROM tbl_name WHERE date >= '1997-05-05';

Ϊ�˷��㣬��������������������ģ�MySQL�Զ��任һ�����ڵ�һ������(���ҷ�����Ҳ���)��������ʱ�ͽ�һ��������TIMESTAMP��DATE��DATETIME�бȽϵ�һ��WHERE�Ӿ��У�Ҳ���㹻���������һ�֡����ɡ����ַ�����ʽ�������ɸ�ʽ��ζ���κα���ַ������ڲ���֮��ķָ�������磬'1998-08-15'��'1998#08#15'�ǵȼ۵ġ���MySQLҲ�ܱ任�������ָ����һ���ַ���(���� '19980815')���������Ϊһ������˵��ͨ��

��������'0000-00-00'������Ϊ'0000-00-00'���洢�ͼ�������ͨ��MyODBCʹ��һ��'0000-00-00'����ʱ����MyODBC 2.50.12�����ϰ汾�������Զ���ת��ΪNULL����ΪODBC���ܴ����������ڡ�

��ΪMySQLʵ���������ı任�����������Թ�����

mysql> INSERT INTO tbl_name (idate) VALUES (19970505);
mysql> INSERT INTO tbl_name (idate) VALUES ('19970505');
mysql> INSERT INTO tbl_name (idate) VALUES ('97-05-05');
mysql> INSERT INTO tbl_name (idate) VALUES ('1997.05.05');
mysql> INSERT INTO tbl_name (idate) VALUES ('1997 05 05');
mysql> INSERT INTO tbl_name (idate) VALUES ('0000-00-00');

mysql> SELECT idate FROM tbl_name WHERE idate >= '1997-05-05';
mysql> SELECT idate FROM tbl_name WHERE idate >= 19970505;
mysql> SELECT mod(idate,100) FROM tbl_name WHERE idate >= 19970505;
mysql> SELECT idate FROM tbl_name WHERE idate >= '19970505';

Ȼ�������н���������

mysql> SELECT idate FROM tbl_name WHERE STRCMP(idate,'19970505')=0;

STRCMP()���ַ����������������idateת��Ϊһ���ַ�������ʵʩ�ַ����Ƚϡ�������'19970505'ת��Ϊһ�����ڲ�ʵʩ���ڱȽϡ�

ע�⣬MySQL����������Ƿ���ȷ�������洢һ������ȷ�����ڣ�����'1998-2-31'����������ڽ����洢��������ڲ��ܱ��任���κκ�����ֵ����DATE�ֶ��д洢һ��0������Ҫ��һ���ٶ����Ⲣ��������Ϊ���������Ӧ�ó�������Σ�������������

18.13 ʱ������

�������һ�����⣬SELECT NOW()��GMTʱ�䷵��ֵ��������ı���ʱ�䣬������趨TZ��������Ϊ��ĵ�ǰʱ������Ӧ���ڷ��������еĻ������У�������safe_mysqld��mysql.server�С�

18.14 �������еĴ�Сд������

ȱʡ�أ�MySQL�����Ǵ�Сд�����е�(������һЩ�ַ����������Ǻ��Դ�Сд�ģ������ݿ���)������ζ�ţ��������col_name LIKE 'a%'��Ѱ���㽫�õ�������A��a��ʼ����ֵ���������Ҫʹ���������Сд���У�ʹ����INDEX(col_name, "A")=0���һ��ǰ׺���������ֵ����ȷ����"A"��ʹ��STRCMP(col_name, "A") = 0��

�򵥵ıȽϲ���(>=��>��= ��< ��<=������;ۺ�)�ǻ���ÿ���ַ��ġ�����ֵ������ͬ������ֵ���ַ�(��E��e��'e)����Ϊ��ͬ���ַ���

LIKE�Ƚ���ÿ���ַ��Ĵ�дֵ�Ͻ���(E==e ����E<>'e����

�������Ҫһ�������DZ�������Сд���еķ�ʽ��������ΪBINARY����7.7 CREATE TABLE�䷨��

�����ʹ������ν��big5������������ݣ���Ҫʹ���е��ַ�����BINARY�������У�����Ϊbig5�����ַ�������˳����� ASCII�����˳��

18.15 NULLֵ����

NULLֵ�ĸ��������SQL�����ֵĻ������ձ�ԭ�����Ǿ�����ΪNULL�Ǻ�һ�����ַ���''��һ���Ķ��������������ģ����磬�����������ȫ��ͬ�ģ�

mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ("");

��������ֵ���뵽phone�У����ǵ�һ������һ��NULLֵ���ڶ�������һ�����ַ�������һ���ĺ��������Ϊ�ǡ��绰���벻֪���������ڶ��������ζ�š���û�е绰����

��SQL�У�NULLֵ�����κ�����ֵ����NULLֵ�Ƚ�ʱ���Ǽٵģ�FALSE��������NULL��һ������ʽ���Dz���һ��NULLֵ�������ڰ����ڱ���ʽ�е�������ͺ������ĵ���ָ�������������ӣ����е��з���NULL��

mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);

�������ҪѰ��ֵ��NULL���У��㲻��ʹ��=NULL���ԡ�������䲻�����κ��У���Ϊ���κα���ʽ��expr = NULL�Ǽٵģ�

mysql> SELECT * FROM my_table WHERE phone = NULL;

Ҫ��Ѱ��NULLֵ�������ʹ��IS NULL���ԡ�������ʾ����ҳ�NULL�绰����Ϳյĵ绰���룺

mysql> SELECT * FROM my_table WHERE phone IS NULL;
mysql> SELECT * FROM my_table WHERE phone = "";

��MySQL�У�����ܶ�������SQL������һ�����㲻������������NULLֵ���С������������������ΪNOT NULL�����ң��㲻�ܲ���NULL�����������С�

����LOAD DATA INFILE��ȡ����ʱ��������''���¡��������Ҫ��һ��������NULLֵ����Ӧ�����ı��ļ���ʹ��\N�������ϵĴ�'NULL'Ҳ������ijЩ������ʹ�á���7.16 LOAD DATA INFILE�䷨��

��ʹ��ORDER BYʱ�����ȳ���NULLֵ���������DESC�Խ�������NULLֵ�����ʾ����ʹ��GROUP BYʱ�����е�NULLֵ����Ϊ����ȵġ�

Ϊ��������NULL�Ĵ���������ʹ��IS NULL��IS NOT NULL�������IFNULL()������

��ijЩ�����ͣ�NULLֵ������ش���������㽫NULL������ĵ�һ��TIMESTAMP�У�����뵱ǰ�����ں�ʱ�䡣����㽫NULL����һ��AUTO_INCREMENT�У������˳���е���һ�����֡�

��

18.16 alias����

�������GROUP BY��ORDER BY����HAVING������ʹ�ñ��������С�����Ҳ��������Ϊ��ȡһ�����õ�����֣�

SELECT SQRT(a*b) as rt FROM table_name GROUP BY rt HAVING rt > 0;
SELECT id,COUNT(*) AS cnt FROM table_name GROUP BY id HAVING cnt > 0;
SELECT id AS "Customer identity" FROM table_name;

ע�⣬��� ANSI SQL ����������һ��WHERE�Ӿ�������һ��������������Ϊ��WHERE���뱻ִ��ʱ����ֵ������û���սᡣ�������в�ѯ�����Ϸ���

SELECT id,COUNT(*) AS cnt FROM table_name WHERE cnt > 0 GROUP BY id;

WHERE��䱻ִ����ȷ����Щ��Ӧ�ð���GROUP BY�����У���HAVING��������Ӧ��ֻ�ý�������е���Щ�С�

18.17 �ӹ����ı���ɾ����

��ΪMySQL��֧����ѡ�����DELETE�����ʹ�ö��������Ӧ��ʹ�����з�����2�������ı���ɾ���У�

  1. ���������ij��WHERE����SELECT��
  2. �������л�����ͬ������DELETE�С�
  3. DELETE FROM related_table WHERE related_column IN (selected_rows)

�����related_column��ѯ�е��ַ���ȫ����������1,048,576(ȱʡֵmax_allowed_packet������Ӧ�÷ֳɸ�С�IJ��ֲ���ִ�ж��DELETE��䡣���related_column��һ����������ÿ��ֻɾ��100-1000��related_column id������ʹ��DELETE��졣���related_column����һ���������ٶ���IN�Ӿ��в����������޹ء�

18.18 ���û��ƥ���е�����

�������һ�����ӵIJ�ѯ���漰���������û�з����κ��У���Ӧ��ʹ�����й��̲������ѯ����ʲô���ԣ�

  1. EXPLAIN���Բ�ѯ���Ҽ�����Ƿ����ҳ���Ȼ�Ǵ����һЩ��������7.22 EXPLAIN�䷨(�õ�����һ��SELECT����Ϣ)��
  2. ��ѡ����Щ��WHERE�Ӿ���ʹ�õ��ֶΡ�
  3. һ�δӲ�ѯ��ɾ��һ������ֱ��������һЩ�С�������ܴ󣬶Բ�ѯʹ��LIMIT 10��һ�������⡣
  4. ��Ӧ���Ѿ�ƥ��һ�е�����һ��SELECT����Դ�ѯ��������ɾ���ı���
  5. ����㽫FLOAT��DOUBLE������С�������ֽ��бȽϣ��㲻��ʹ��=!����������ڴ��������������dz����ģ���Ϊ����ֵ����׼ȷ��ֵ��
    mysql> SELECT * FROM table_name WHERE float_column=3.5;
       ->
    mysql> SELECT * FROM table_name WHERE float_column between 3.45 and 3.55;
    

    �ڴ��������£���FLOAT�ij�һ��DOUBLE����������

  6. �������Ȼ���ܷ��ִ�����ʲô������һ����С�Ŀ�����mysql test < query.sql�IJ�������ʾ������⡣�������mysqldump --quick database tables > query.sql����һ�������ļ�����һ���༭���༭�ļ���ɾ��һЩ������(�����̫����Щ���)�������ļ�ĩβ�������ѡ����䡣��������Ȼ�����⣬������������
    shell> mysqladmin create test2
    shell> mysql test2 < query.sql
    

    ʹ��mysqlbug���ʼIJ����ļ���[email protected]��

18.19 ��ALTER TABLE�йص�����

���ALTER TABLE��������һ������

Error on rename of './database/name.frm' to './database/B-a.frm' (Errcode: 17)

���������MySQL��ǰһ��ALTER TABLE���Ѿ���������������һ����Ϊ��A-xxx������B-xxx�����ϵ����ݿ��������������£���MySQL����Ŀ¼�в�ɾ������������A-��B-��ʼ���ļ���������԰������Ƶ���ĵط�������ɾ������)��

ALTER TABLE������ʽ�ǣ�

  • ��Ҫ��ĸı䴴��һ����Ϊ��A-xxx�����±���
  • ���ϱ��������п�������A-xxx����
  • �ϱ�������Ϊ��B-xxx����
  • ��A-xxx��������Ϊ����ϱ������֡�
  • ��B-xxx����ɾ����

���ijЩ��������������MySQL��ͼ��ԭ�ı䡣�����������(��Ȼ���ⲻӦ�÷�����)��MySQL�����������ϱ�Ϊ��B-xxx������һ���򵥸�����Ӧ�ûָ�������ݡ�

18.20 �����ı�һ�ű����е�˳��

SQL��Ҫ�����г���Ӧ�ó����Ա������ݴ洢��ʽ����Ӧ������������Ҫ�������ݵ���Ըָ��˳�����磺

SELECT col_name1, col_name2, col_name3 FROM tbl_name;

����col_name1��col_name2��col_name3��˳�򷵻��У�����

SELECT col_name1, col_name3, col_name2 FROM tbl_name; 

����col_name1��col_name3��col_name2��˳�򷵻��С�

��һ��Ӧ�ó����У���Ӧ�������������ǵ�λ��ʹ��SELECT * �����У���Ϊ�����ص��е�˳����Զ������֤����������ݿ��һ���򵥸ı���ܵ������Ӧ�ó����൱��Ϸ���Ե�ʧ�ܡ�

�����������������Ҫ�ı��е�˳���������������

  1. ����ȷ����˳�򴴽�һ���±���
  2. ִ��INSERT INTO new_table SELECT fields-in-new_table-order FROM old_table.
  3. ɾ�������old_table��
  4. ALTER TABLE new_table RENAME old_table��

ȥ����, ��ǰ, ��һ��, �������֣�Ŀ¼.

��������  ����Linux