??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲综合色成在线播放,亚洲精品美女久久久久99,国产在亚洲线视频观看http://m.tkk7.com/seaairland/archive/2006/05/06/44773.htmlchenhuichenhuiSat, 06 May 2006 08:57:00 GMThttp://m.tkk7.com/seaairland/archive/2006/05/06/44773.htmlhttp://m.tkk7.com/seaairland/comments/44773.htmlhttp://m.tkk7.com/seaairland/archive/2006/05/06/44773.html#Feedback0http://m.tkk7.com/seaairland/comments/commentRss/44773.htmlhttp://m.tkk7.com/seaairland/services/trackbacks/44773.html18.2.1Lost connection to server during query的错误?/p>

?code>wait_timeout变量改变旉限制?/p>

你可以通过执行 CR_SERVER_LOST 当写服务器时Q客h有出错,但是它没有得到对问题的一个完整的{案(或Q何答??

如果你向服务器发送不正确的或太大的查询,你也可能得到q些错误。如?code>BLOB?Q你可以使用mysqld以增加查询限制。多余的内存按需分配Q这?code>mysqld必须q回较大的结果行Ӟ才用更多的内存Q?/p>

18.2.2mysqld服务器:Unix套接字,它通过在文件系l中的一个文?~省localhostQ用Unix套接字?/p>

错误(2002Q?code>mysqld服务器时Q你正在使用一个错误的套接字文件或TCP/IP端口?

由检?使用mysqld的进E启动!如果没有Mmysqldq程正在q行Q你可以通过试q些不同的连接来查服务器(当然Q端口号和套接字路径名可能在你的安装中是不同?Q?/p>

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输出Q即Q当前主机名)被代替进Can't connect to local MySQL server错误的一些原因:

  • mysqld使用 MIT-pthreads 软g包。见4.2 由MySQL支持的操作系l。然而,MIT-pthreads不支持Unix套接字,因此当与服务器连接时Q在q样一个系l上Q你L必须明确地指定主机名。试试用这个命令检查到服务器的q接Q?pre>shell> mysqladmin -h `hostname` version
  • 某h删除?code>?tmp/mysqld.sock?/font>)。你可能有一?code>?tmp?/font>目录中删除的d)。你L可以q行mysqladmin正在试图使用的套接字实存在。在q种情况下,修复Ҏ是删?code>“mysqld.sock 或将套接字放在其他地斏V你能用q个命o?strong>MySQL配置时指定一个不同的套接字地点:
    shell> ./configure --with-unix-socket-path=/path/to/socket
    

    你也可以使用safe_mysqld和在启动你的MySQL客户前设|环境变?code>--socket=/path/to/socket选项启动MYSQL_UNIX_PORT为套接字路径名或由提供套接字路径名作为客L参数做到。你可用q个命o试套接字:

    shell> mysqladmin --socket=/path/to/socket version
    
  • 你正在?Linux和线E已l死?核心們ր了)。在q种情况中,你必Ld?code>mysql_zap脚本Q。见18.1 如果MySQLL崩溃怎么办?

如果你得到错?code>telnet your-host-name tcp-ip-port-numberq且按几ơ回车来查服务器是否正常q行。如果有一?strong>MySQLq行在这个端口上Q你应该得到一个包含正在运行的MySQL服务器的版本L应答。如果你得到cM?code>mysqld守护q程Qƈ?code>port)?

  • 查你?code>--skip-networking选项启动?
  • 18.2.3mysqld已经得到了大?'hostname'的在中途被中断了的q接h。在mysqld认定出错?象来字一个黑客的d)Qƈ且阻止该站点q一步的q接Q直到某人执行命?code>mysqld?0个连接错误后d一C机。你可以通过象这样启动服务器很容易地调整它:

    shell> safe_mysqld -O max_connect_errors=10000 &
    

    注意Q对l定的主机,如果得到q条错误消息Q你应该首先查该L的TCP/IPq接有没有问题。如果你的TCP/IPq接不在q行Q增?code> Too many connections错误

    如果在你试土q接MySQLӞ你得到错?code>max_connections个客戯接了mysqld服务器?/p>

    如果你需要比~省(100)更多的连接,那么你应该重?code>mysqld实际上允?max_connections+1)个客戯接。最后一个连接是Z个用SHOW PROCESSLIST扑և什么可能出错。见7.21 Out of memory错误

    如果你发出查询ƈ且得到类g下面的错误:

    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
    

    注意Q错误指向了MySQL?code>mysql --quickQ它使用 Packet too large错误

    当一?strong>MySQL客户?code>max_allowed_packet个字节长的包Q它发出一?code>mysql客户Q你可以通过?code> DBI)Q你需要在你启动服务器时设|包大小。你可以使用max_allowed_packetZ个更大的寸。例如,如果你正期望一个全长的--set-variable=max_allowed_packet=24M选项来启动服务器?/p>

     

    18.2.7tmp_table_size字节大时。ؓ了避免这个问题,你可以?code>-O tmp_table_size=#选项来增加时表的大,或在你发出有疑问的查询之前用SQL选项 SET OPTION句法?/p>

    你也可以使用mysqld。这与ؓ所有查询?code> Commands out of sync in client错误

    如果你在你的客户代码中得?code>mysql_use_result()q且在你已经调用?code>mysql_use_result()?code> Ignoring user错误

    如果你得C列错误:

    mysqld启动时或在它再次装蝲权限表时Q它?code>user表的新版?code>mysqlshow mysql user看看口o字段是否于 16个字W来查它。如果是q样Q你可以通过q行--old-protocol选项启动user表中的用h?code>mysqld?

  • 你没有?code>user表中指定了一个口令。?code>user表中的用戗确保?code> Table 'xxx' doesn't exist错误

    如果你得到错?code>Can't find file: 'xxx' (errno: 2)Q这意味着在当前数据库中没有名?code>SHOW TABLES查你在当前数据库中有哪个表。见7.21mysqladmin kill到线E。在下一ơ检查磁盘时Q线E将被放??分钟??

  • 注意Q其他线E可能正在等待引起“磁盘溢出”条件的表。如果你有几个“锁定的”的U程Q杀L在等待磁盘溢出条件的那个U程允许其他线El?
  • 18.4 如何从一个文本文件运行SQL命o

    一般地Q?code>mysql从该文gd其输入。要惌样做Q创造一个文本文?tt>mysqlQ?/p>

    shell> mysql database < text_file
    

    你也能启动有一?code>TMPDIR环境变量的g为存储时文件的目录的\径名。如果你没有讄?tmp?/font>?tt>safe_mysqld讑֮mysqld?-tmpdir选项目设|时目录?/p>

    MySQL以“隐含文件”创建所有时文件。这保证了如?code>ORDER BY?code>sizeof(数据库指? 通常?Q但是在未来对确实很大的表可能增加?/p>

    对一?code>“SQL_*?/font>格式的名字?/p>

    OPTIMIZE TABLE在原数据库表的同一个目录中创徏一张时表?/p>

    18.6 怎样保护?tmp/mysql.sock?/font>Q在Unix的大多数版本上,你能通过为其讄?tmp?/font>文gpȝ。作?code>?tmp?/font>文gpȝ使得文g仅能׃们的所有者或用户(ls -ld /tmp?code>tQ该位被讄了?/p>

    18.7Access denied错误的原因?

    18.8 怎样作ؓ一个一般用戯行MySQL

    MySQL服务?code>mysqld改由Unix用户mysqladmin shutdown)?

  • 改变数据库目录和文g以便root用户才能做到)Q?pre>shell> chown -R user_name /path/to/mysql/datadir

    如果?strong>MySQL数据目录中的目录或文件是W号链接Q你也将需要顺着那些链接q改变他们指向的目录和文件?code>user_name用户启动服务器,或如果你正在使用MySQL 3.22或以后版本,以Unixmysqldq?code>mysqld在接受Mq接之前切换CUnix mysql.server脚本启动mysql.server?code>user_nameq行--user选项调用safe_mysqld是必要的。)

  • 现在Q你?code>user_nameq行Qƈq行完好。尽有一件事情没有变化:权限表的内容。缺??在q行了脚?code>root是唯一有存?code>rootdӞq不应该L你作?strong>MySQL-u root的选项?/p>

    注意通过在命令行上提?code>root存取MySQLQ与作ؓUnix -u选项Q客户将试图使用你的Unixd名作Z?strong>MySQL用户名进行连接?/p>

    如果你的Unix机器本n不安全,你可能应该至在存取表中?strong>MySQLmysql -u root db_nameq且做他喜欢做的M事情?/p>

    18.9 怎样重新讄一个忘记的口o

    如果你忘CMySQL?code>killQ不?code>mysqld服务器来关闭mysqld服务器。pid 被保存在一?code> root用户或运行服务器的相同用户做q个?/p>

  • 使用mysqld?
  • ?code>GRANT命o改变口o。见7.26REVOKE句法。你也可以用mysqladmin -h hostname flush-privileges或用SQL命omysql发出下列错误消息Q?

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

    那么可能是在UMASK可能讄不正。缺省的umask值是safe_mysqld改变其行为:

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

    18.11 文g没找?/h2>

    如果你从MySQL得到Can't open file: ... (errno: 24)或Q何其他有errno 24的错误,它意味着Q你没有?strong>MySQL分配_的文件描q符。你能?code>mysqld正在试图同时保持打开太多的文件。你也可以告?code>mysqld可得到的文g描述W数量?/p>

    Z告诉safe_mysqld?code>max_connectionsg减打开文g的数?~省值是90)?/p>

    要想改变safe_mysqld脚本。脚本中有一条注释了的行'#'字符来去掉该行的注释Qƈ且改变数?56改变?code>ulimit 能增加文件描q符的数量,但是只能到操作系l强加的限制。如果你需要增加每个进E可用的文g描述W数量的OS限制Q参见你的操作系l文档?/p>

    注意Q如果你q行ulimit不工作Q当你请求当前限制时Q?code>sh启动DATE列的问题

    一?code>'YYYY-MM-DD'。根据ANSI SQLQ不允许其他格式。你应该?code>SELECT语句的WHERE子句中用这个格式。例如:

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

    Z方便Q如果日期用在数字上下文Q?strong>MySQL自动变换一个日期到一个数?q且反过来也如此)。当更新时和一个日期与DATE?code>WHERE子句中,也是_灉|以允怸U“宽䏀的字符串格式。(宽松格式意味着M标点字符用作在部件之间的分割W。例如,'1998#08#15'是等L。)MySQL也能变换不包含分割符的一个字W串(例如'0000-00-00'可以作ؓ?/font>当通过MyODBC使用一?code>NULLQ因为ODBC不能处理q种日期?/p>

    因ؓMySQL实行了上q的变换Q下列语句可以工作:

    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';
    

    然而,下列不工作Q?

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

    idate转换Z个字W串q且实施字符串比较。它不将'1998-2-31'Q错误的日期被存储。如果日期不能被变换CQ何合理的|?code>0。这主要是一个速度问题q且我们认ؓ查日期是应用E序的责任,而不服务器?/p>

    18.13 时区问题

    如果你有一个问题,TZ环境变量Z的当前时区。这应该在服务器q行的环境进行,例如?code>mysql.server中?/p>

    18.14 在搜索中的大写敏感?/h2>

    ~省圎ͼMySQL搜烦是大写不敏感的(管有一些字W集从来不是忽略大小写的Q例?code>col_name LIKE 'a%'搜寻Q你得到所有以a开始的列倹{如果你惌使这个搜索大写敏感Q用象查一个前~。或如果列值必ȝ切是Q?code>?/p>

    单的比较操作(LIKE 比较在每个字W的大写gq行(E==e 但是E<>'eQ?/p>

    如果你想要一个列L被当作大写敏感的方式,声明它ؓ CREATE TABLE句法?/p>

    如果你用以所谓的big5~码的中文数据,你要使所有的字符列是NULL值问?/h2>

    NULL是和一个空字符?code>

    两个语句把值插入到NULLD第二个插入一个空字符丌Ӏ第一个的含义可以认ؓ是“电话号码不知道”,而第二个则可意味着“她没有电话”?

    在SQL中,NULL值比较时L假的QFALSEQ。包?code>NULL|除非在包含在表达式中的运符和函数的文档中指出。在下列例子Q所有的列返?code>NULL的列Q你不能使用expr = NULL是假的:

    mysql> SELECT * FROM my_table WHERE phone = NULL;
    

    要想LIS NULL试。下例显C如何找?code>

    ?strong>MySQL中,像很多其他的SQL服务器一P你不能烦引可以有NOT NULLQ而且Q你不能插入LOAD DATA INFILEd数据ӞI列?code>NULL|你应该在文本文g中?code>'NULL'也可以在某些情Ş下用。见7.16ORDER BYӞ首先呈现DESC以降序排序,GROUP BYӞ所有的NULL的处理,你能使用IS NOT NULLq算W和NULLDҎ地处理。如果你?code>TIMESTAMP列,则插入当前的日期和时间。如果你?code>AUTO_INCREMENT列,则插入顺序中的下一个数字?/p>

     

    18.16 GROUP BY?code>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;
    

    注意Q你?ANSI SQL 不允怽在一?code>WHERE代码被执行时Q列D可能没有l结。例如下列查询是不合?/strong>Q?/p>

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

    GROUP BY部分中,?code>DELETE语句中用多个表Q你应该使用下列Ҏ?个关联的表中删除行:

    1. 在主表中Z某个SELECT行?
    2. 在主表中Z相同的条?code>DELETE FROM related_table WHERE related_column IN (selected_rows)

    如果?code>max_allowed_packetQ,你应该分成更的部分q且执行多个related_column是一个烦引,你每ơ只删除100-1000?code>DELETE最快。如?code>IN子句中参数的数量无关?br />

    18.18 解决没有匚w行的问题

    如果你有一个复杂的查询Q涉及多个表Q但没有q回M行,你应该用下列过E查找你的询问有什么不对:

    1. EXPLAIN句法(得到关于一?code>WHERE子句中用的字段?
    2. 一ơ从查询中删除一个表Q直到它q回一些行。如果表很大Q对查询使用SELECTQ针对从询问中做后被删除的表?
    3. 如果你将DOUBLE列与有小数的数字q行比较Q你不能使用FLOATҎ一?code>mysql test < query.sql的测试来昄你的问题。你可以?code>mysqlbug的邮寄测试文件到mysql@lists.mysql.com?/p>

    18.19 ?code>ALTER TABLEMq样一个错误:

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

    问题可能?strong>MySQL在前一?code>“A-xxx?/font>?tt>A-?code>ALTER TABLE 工作方式是: