Archive

Archive for the ‘数据库’ Category

如何抽取Emial中有两个@的无法地址

October 20th, 2009

环境是mysql

mysql> select * from t_test_1;
+————–+
| mail         |
+————–+
|a@16@163.com|
|a@163.com |
+————–+
2 rows in set (0.00 sec)

方法1

mysql> select * from t_test_1 where instr(substr(mail,instr(mail,’@')+1),’@')>=1;
+————–+
| mail         |
+————–+
|a@16@163.com|
+————–+
1 row in set (0.00 sec)

方法2

mysql>  select * from t_test_1 where mail like‘%@%@%’;
+————–+
| mail         |
+————–+
|a@16@163.com|
+————–+
1 row in set (0.00 sec)

你还有方法3吗,如有请告诉我,谢谢 hehe

数据库

ERROR 1193: Unknown system variable ‘log_slow_queries’

October 20th, 2009
[25 Oct 2007 12:02] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:http://lists.mysql.com/commits/36328ChangeSet@1.2547, 2007-10-25 14:02:27+04:00, kaa@polly.(none) +6 -0
  Fix forbug #29131: SHOW VARIABLES reports variable 'log' but SET
  doesn't recognize it

  This is a 5.0 version of the patch, it will be null-merged to 5.1

  Problem:

  'log' and 'log_slow_queries' were "fixed" variables, i.e. they showed up
  in SHOW VARIABLES, but could not be used in expressions like
  "select @@log". Also, using them in the SET statement produced an
  incorrect "unknown system variable" error.

  Solution:

  Make 'log' and 'log_slow_queries' read-only dynamic variables to make
  them available for use in expressions, and produce a correct error
  about the variable being read-only when used in the SET statement.

数据库

[原创] sql mode与 enum 类型

October 20th, 2009

1.sql mode简介

Mysql中,sql mode可以用来解决以下问题
(1).通过设置不同的sql mode,可以在不同严格程序进行数据校验.有效地保证了数据准确性.
(2).通过设置sql mode为ANSI模式,来保证大多数SQL符合标准SQL的语法,这样在不同数据库之间迁移时,不需要对业务    修改太多.

在Mysql 5.0以下,查询默认的sql mode(sql mode参数)有:real_as_float,pipes_as_concat,ansi_quotes,gnore_space和ANSI。在这些模 式下可以插入超过字段定义长度的数据,或是在字段中没有定义的元素数据(如,enum)。不过在插入后会有一个warning(可以用 show warnings来查看)。

可以通过设置sql mode为STRICT_TRANS_TABLES(严格模式)来实现数据的严格校检,使错误数据不能插入,从而保证数据准确性。

TRADITIONAL模式也属于严格模式,同样可以实现严格校检,使错误数据不能插入,从而保证数据准确性。不过在这种模式MAX(X,0)返回的结果是NULL,所以在包含有MAX的运算中根据实际情况设定好sql mode.

2.ENUM简介

ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值。
在某些情况下,ENUM值也可以为空字符串(”)或NULL:
如果你将一个非法值插入ENUM(也就是说,允许的值列之外的字符串),将插入空字符串以作为特殊错误值。该字符串与“普通”空字符串不同,该字符串有数值值0。
如果将ENUM列声明为允许NULL,NULL值则为该列的一个有效值,并且 默认值为NULL。如果ENUM列被声明为NOT NULL,其默认值为允许的值列的第1个元素。

每个枚举值有一个索引:

来自列规定的允许的值列中的值从1开始编号。
空字符串错误值的索引值是0。这说明你可以使用下面的SELECT语句来找出分配了非法ENUM值的行:

select * from test where browsertype=0;

NULL值的索引是NULL。

例如,定义为ENUM的列(‘one’,’two’,’three’)可以有下面所示任何值。还显示了每个值的索引:

索引
NULL NULL
0
‘one’ 1
‘two’ 2
‘three’ 3

枚举最多可以有65,535个元素。
当创建表时,ENUM成员值的尾部空格将自动被删除。
当检索时,保存在ENUM列的值使用列定义中所使用的大小写来显示。请注意可以为ENUM列分配字符集和 校对规则。对于二进制或大小写敏感的校对规则,当为列分配值时应考虑大小写。

3.举列测试

(1)sql mode为ANSI

mysql> create table test(id bigint(20) auto_increment primary key,
-> browsertype enum(‘ie’,'firefox’,'other’)
-> );
Query OK, 0 rows affected (0.10 sec)

mysql> desc test;
+————-+——————————+——+—–+———+—————-+
| Field       | Type                         | Null | Key | Default | Extra          |
+————-+——————————+——+—–+———+—————-+
| id          | bigint(20)                   | NO   | PRI | NULL    | auto_increment |
| browsertype | enum(‘ie’,'firefox’,'other’) | YES  |     | NULL    |                |
+————-+——————————+——+—–+———+—————-+
2 rows in set (0.05 sec)

mysql> set session sql_mode=’ANSI’;
Query OK, 0 rows affected (0.14 sec)

mysql> insert into test(browsertype) values(‘ie’) ;
Query OK, 1 row affected (0.07 sec)

mysql> insert into test(browsertype) values(‘maxthon’) ;
Query OK, 1 row affected (0.03 sec)

mysql> show warnings;(数据虽然成功insert,但有warning)
+———+——+————————————————–+
| Level   | Code | Message                                          |
+———+——+————————————————–+
| Warning | 1265 | Data truncated for column ‘browsertype’ at row 1 |
+———+——+————————————————–+
1 row in set (0.01 sec)

mysql> select * from test;
+—-+————-+
| id | browsertype |
+—-+————-+
|  1 | ie          |
|  2 |             |
+—-+————-+
2 rows in set (0.01 sec)

mysql> select * from test where browsertype=0;(空字符串错误值的索引值是0。SELECT可找出分配了非法ENUM值的行)
+—-+————-+
| id | browsertype |
+—-+————-+
|  2 |             |
+—-+————-+
1 row in set (0.04 sec)

(2)使用严格模式(STRICT_TRANS_TABLES)

mysql> set session sql_mode=’STRICT_TRANS_TABLES’;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@sql_mode;
+———————+
| @@sql_mode          |
+———————+
| STRICT_TRANS_TABLES |
+———————+
1 row in set (0.00 sec)

mysql> select * from test;
+—-+————-+
| id | browsertype |
+—-+————-+
|  1 | ie          |
|  2 |             |
+—-+————-+
2 rows in set (0.00 sec)

mysql> insert into test(browsertype) values(‘maxthon’) ;
ERROR 1265: Data truncated for column ‘browsertype’ at row 1

mysql> insert into test(browsertype) values(‘firefox’) ;
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+—-+————-+
| id | browsertype |
+—-+————-+
|  1 | ie          |
|  2 |             |
|  3 | firefox     |
+—-+————-+
3 rows in set (0.00 sec)

(3) TRADITIONAL模式

mysql> create table t11 (i int);
Query OK, 0 rows affected (0.02 sec)

mysql> set sql_mode=’ANSI’;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t11 values(9%4);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t11;
+——+
| i    |
+——+
| NULL |
+——+
1 row in set (0.00 sec)

mysql> set sql_mode=’TRADITIONAL’;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t11 values(9%0);
ERROR 1365: Division by 0

mysql> show warnings;
+——-+——+—————+
| Level | Code | Message       |
+——-+——+—————+
| Error | 1365 | Division by 0 |
+——-+——+—————+
1 row in set (0.02 sec)

数据库

mysql *.frm文件丢失恢复

October 20th, 2009

mysql> desc t11;
ERROR 1146: Table ‘dbatest.t11′ doesn’t exist

[mysql@QANEW dbatest]$ ll t11.*
-rw-rw—-    1 mysql    mysql       16000 Aug  1 21:08 t11.MYD
-rw-rw—-    1 mysql    mysql       12288 Aug  1 19:07 t11.MYI

[mysql@QANEW dbatest]$ mv t11.MYI t11.MYI.bak
[mysql@QANEW dbatest]$ mv t11.MYD t11.MYD.bak

mysql> create table t11 as select * from old_t11 where 1=2; —-这里很关键,要记录这个表结构
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc t11;
+———+———+——+—–+————+——-+
| Field   | Type    | Null | Key | Default    | Extra |
+———+———+——+—–+————+——-+
| adsID   | int(10) | NO   |     | 0          |       |
| adsDate | date    | NO   |     | 0000-00-00 |       |
| adsTime | int(2)  | NO   |     | 0          |       |
| adsHits | int(20) | YES  |     | 0          |       |
+———+———+——+—–+————+——-+
4 rows in set (0.00 sec)

mysql> select * from t11;
Empty set (0.01 sec)

mysql> select * from t11;
Empty set (0.00 sec)

mysql> exit
Bye
[mysql@QANEW mysql]$ /usr/local/mysql/bin/mysqladmin -uroot -pxxxxxx shutdown
STOPPING server from pid file /var/run/mysqld/mysqld.pid
080801 21:15:31  mysqld ended

[mysql@QANEW dbatest]$ rm t11.MYD
[mysql@QANEW dbatest]$ rm t11.MYI

[mysql@QANEW dbatest]$ mv t11.MYI.bak t11.MYI
[mysql@QANEW dbatest]$ mv t11.MYD.bak t11.MYD
[mysql@QANEW mysql]$ /usr/local/mysql/bin/mysqld_safe &
[1] 14118

[mysql@QANEW mysql]$ mysql -uroot -pmysql51dba
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-standard-log

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> use dbatest;

Database changed

mysql> select count(*) from t11;
+———-+
| count(*) |
+———-+
|     1000 |
+———-+
1 row in set (0.05 sec)

数据库

从全备份的SQL语句中恢复某张表 [原创]

October 20th, 2009

今天有朋友问,如何从如何从全备份SQL语句中恢复某张表,比如我我删除了一张表,我现在只想恢复这一张表.
做以下测试,但结果不是很理想.

目前认为,这样的恢复要分两种情况.

1.要恢复的表在导出的时候是第一个被导出的表
在这种情况下,直接导入就可以了,其他表已存在,不会导入
mysql> use db1;
Database changed
mysql> show tables;
+—————+
| Tables_in_db1 |
+—————+
| t1            |
| t2            |
| t3            |
+—————+
3 rows in set (0.00 sec)
mysql> select * from t1; select * from t2; select * from t3;
+——+——-+
| id   | name  |
+——+——-+
|    1 | yxyup |
|    1 | yxyup |
+——+——-+
2 rows in set (0.00 sec)

+——+——-+
| id   | name  |
+——+——-+
|    1 | yxyup |
|    1 | yxyup |
+——+——-+
2 rows in set (0.00 sec)

+——+——-+
| id   | name  |
+——+——-+
|    1 | yxyup |
|    1 | yxyup |
+——+——-+
2 rows in set (0.00 sec)
mysql> drop table t1;
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
+—————+
| Tables_in_db1 |
+—————+
| t2            |
| t3            |
+—————+
2 rows in set (0.00 sec)

[mysql@QANEW mysql]$ mysql -uroot -pabc123 -D db1 < db1.dump
ERROR 1050 at line 28: [color=Red]Table ‘t2′ already exists[/color]

mysql> show tables;
+—————+
| Tables_in_db1 |
+—————+
| t1            |
| t2            |
| t3            |
+—————+
3 rows in set (0.00 sec)
2. 如果在恢复的表,不是第一个被导出的,那么是没有办法被恢复的(至少我现在不知道恢复).
我一般采用的恢复方式是.将mysqldump导出的dump文件进行抽表,把要恢复的表结构和记录抽取出来.
mysql> show tables;
+—————+
| Tables_in_db1 |
+—————+
| t1            |
| t2            |
| t3            |
+—————+
3 rows in set (0.00 sec)

mysql> drop table t3;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+—————+
| Tables_in_db1 |
+—————+
| t1            |
| t2            |
+—————+
2 rows in set (0.00 sec)

[mysql@QANEW mysql]$ mysql -uroot -pabc123 -D db1 < db1.dump
ERROR 1050 at line 11: Table ‘t1′ already exists

mysql> show tables;
+—————+
| Tables_in_db1 |
+—————+
| t1            |
| t2            |
+—————+
2 rows in set (0.00 sec)

—-可以看出如果不是第一个被导出的表是无法恢复的.
用抽取方法试一下

[mysql@QANEW mysql]$ vi db1_t3.dump


– Table structure for table `t3`

CREATE TABLE t3 (
id int(11) default NULL,
`name` char(10) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


– Dumping data for table `t3`

INSERT INTO t3 VALUES (1,’yxyup’);
INSERT INTO t3 VALUES (1,’yxyup’);

[mysql@QANEW mysql]$ mysql -uroot -pabc123 -D db1 < db1_t3.dump

mysql> show tables;
+—————+
| Tables_in_db1 |
+—————+
| t1            |
| t2            |
| t3            |
+—————+
3 rows in set (0.01 sec)

mysql> desc t3;
+——-+———-+——+—–+———+——-+
| Field | Type     | Null | Key | Default | Extra |
+——-+———-+——+—–+———+——-+
| id    | int(11)  | YES  |     | NULL    |       |
| name  | char(10) | YES  |     | NULL    |       |
+——-+———-+——+—–+———+——-+
2 rows in set (0.01 sec)

mysql> select * from t3;
+——+——-+
| id   | name  |
+——+——-+
|    1 | yxyup |
|    1 | yxyup |
+——+——-+
2 rows in set (0.00 sec)
成功恢复了

当然,如果全库导出的文件很大,在抽取时会很困难.

数据库

mysql如何导出一个表的数据?

October 20th, 2009

刚才在pub上看到一个朋友问 ,如下

mysql如何导出一个表的数据?

用mysqldump
如何导出一个或者几个表的数据?

自己也是刚学mysql,测试了一下,于是给出了以下方法,希望能有所帮助


mysql

> use dbatest;

Database changed

mysql> select * from pet;

+———-+——–+———+——+————+————+

| name | owner | species | sex | birth | death |

+———-+——–+———+——+————+————+

| Fluffy | Harold | cat | f | 1993-02-04 | NULL |

| Claws | Gwen | cat | m | 1994-03-17 | NULL |

| Buffy | Harold | dog | f | 1989-05-13 | NULL |

| Fang | Benny | dog | m | 1990-08-27 | NULL |

| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |

| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |

| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |

| Slim | Benny | snake | m | 1996-04-29 | NULL |

+———-+——–+———+——+————+————+

8 rows in set (0.01 sec)

[mysql@QANEW mysql]$ mysqldump -uroot -p dbatest pet > dbatest_pet.sql

Enter password:

[mysql@QANEW mysql]$ cat dbatest_pet.sql

MySQL dump 8.23

Host: localhost    Database: dbatest

———————————————————

Server version       5.0.27-standard-log

Table structure for table `pet`

CREATE TABLE pet (

`name` varchar(20) default NULL,

owner varchar(20) default NULL,

species varchar(20) default NULL,

sex char(1) default NULL,

birth date default NULL,

death date default NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Dumping data for table `pet`

INSERT INTO pet VALUES (‘Fluffy’,‘Harold’,‘cat’,‘f’,’1993-02-04′,NULL);

INSERT INTO pet VALUES (‘Claws’,‘Gwen’,‘cat’,‘m’,’1994-03-17′,NULL);

INSERT INTO pet VALUES (‘Buffy’,‘Harold’,‘dog’,‘f’,’1989-05-13′,NULL);

INSERT INTO pet VALUES (‘Fang’,‘Benny’,‘dog’,‘m’,’1990-08-27′,NULL);

INSERT INTO pet VALUES (‘Bowser’,‘Diane’,‘dog’,‘m’,’1979-08-31′,’1995-07-29′);

INSERT INTO pet VALUES (‘Chirpy’,‘Gwen’,‘bird’,‘f’,’1998-09-11′,NULL);

INSERT INTO pet VALUES (‘Whistler’,‘Gwen’,‘bird’,NULL,’1997-12-09′,NULL);

INSERT INTO pet VALUES (‘Slim’,‘Benny’,‘snake’,‘m’,’1996-04-29′,NULL);

再来一个直接看数据的

[mysql@QANEW mysql]$ mysqldump -uroot -pxxxxxx -t dbatest pet | grep -i insert |awk -FVALUES ‘{print $2}’ >dbatest_pet.sql

[mysql@QANEW mysql]$ cat dbatest_pet.sql

(‘Fluffy’,‘Harold’,‘cat’,‘f’,’1993-02-04′,NULL);

(‘Claws’,‘Gwen’,‘cat’,‘m’,’1994-03-17′,NULL);

(‘Buffy’,‘Harold’,‘dog’,‘f’,’1989-05-13′,NULL);

(‘Fang’,‘Benny’,‘dog’,‘m’,’1990-08-27′,NULL);

(‘Bowser’,‘Diane’,‘dog’,‘m’,’1979-08-31′,’1995-07-29′);

(‘Chirpy’,‘Gwen’,‘bird’,‘f’,’1998-09-11′,NULL);

(‘Whistler’,‘Gwen’,‘bird’,NULL,’1997-12-09′,NULL);

(‘Slim’,‘Benny’,‘snake’,‘m’,’1996-04-29′,NULL);
< font>

数据库

Mysql中日期计算函数

October 20th, 2009

Mysql中日期计算函数

1.curdate() 求当前的日期

mysql> select curdate();
+————+
| curdate()  |
+————+
| 2008-03-11 |
+————+
1 row in set (0.01 sec)

2.now() 求当前日期和时间

mysql> select now();
+———————+
| now()               |
+———————+
| 2008-03-11 10:16:20 |
+———————+
1 row in set (0.00 sec)

3.year() 提取日期中的年

mysql> select year(curdate());
+—————–+
| year(curdate()) |
+—————–+
|            2008 |
+—————–+
1 row in set (0.01 sec)

4.right() 提取日期的MM-DD或是DD

mysql> select right(curdate(),5);
+——————–+
| right(curdate(),5) |
+——————–+
| 03-11              |
+——————–+
1 row in set (0.01 sec)

mysql> select right(curdate(),2);
+——————–+
| right(curdate(),2) |
+——————–+
| 11                 |
+——————–+
1 row in set (0.00 sec)

5.month() 提取日期中的月份

mysql> select month(curdate());
+——————+
| month(curdate()) |
+——————+
|                3 |
+——————+
1 row in set (0.01 sec)

——-未完,待续

数据库

Mysql Explain 详解 [原创]

October 20th, 2009

一.语法

explain < table_name >

例如: explain select * from t3 where id=3952602;

二.explain输出解释

+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
| id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+

1.id
我的理解是SQL执行的顺利的标识,SQL从大到小的执行.

例如:
mysql> explain select * from (select * from ( select * from t3 where id=3952602) a) b;
+—-+————-+————+——–+——————-+———+———+——+——+——-+
| id | select_type | table      | type   | possible_keys     | key     | key_len | ref  | rows | Extra |
+—-+————-+————+——–+——————-+———+———+——+——+——-+
|  1 | PRIMARY     | <derived2> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  2 | DERIVED     | <derived3> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  3 | DERIVED     | t3         | const  | PRIMARY,idx_t3_id | PRIMARY | 4       |      |    1 |       |
+—-+————-+————+——–+——————-+———+———+——+——+——-+

很显然这条SQL是从里向外的执行,就是从id=3 向上执行.

2. select_type

就是select类型,可以有以下几种

(1) SIMPLE
简单SELECT(不使用UNION或子查询等) 例如:
mysql> explain select * from t3 where id=3952602;
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
| id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
|  1 | SIMPLE      | t3    | const | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 |       |
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+

(2). PRIMARY

我的理解是最外层的select.例如:

mysql> explain select * from (select * from t3 where id=3952602) a ;
+—-+————-+————+——–+——————-+———+———+——+——+——-+
| id | select_type | table      | type   | possible_keys     | key     | key_len | ref  | rows | Extra |
+—-+————-+————+——–+——————-+———+———+——+——+——-+
|  1 | PRIMARY     | <derived2> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  2 | DERIVED     | t3         | const  | PRIMARY,idx_t3_id | PRIMARY | 4       |      |    1 |       |
+—-+————-+————+——–+——————-+———+———+——+——+——-+

(3).UNION

UNION中的第二个或后面的SELECT语句.例如
mysql> explain select * from t3 where id=3952602 union all select * from t3 ;
+—-+————–+————+——-+——————-+———+———+——-+——+——-+
| id | select_type  | table      | type  | possible_keys     | key     | key_len | ref   | rows | Extra |
+—-+————–+————+——-+——————-+———+———+——-+——+——-+
|  1 | PRIMARY      | t3         | const | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 |       |
|  2 | UNION        | t3         | ALL   | NULL              | NULL    | NULL    | NULL  | 1000 |       |
|NULL | UNION RESULT | <union1,2> | ALL   | NULL              | NULL    | NULL    | NULL  | NULL |       |
+—-+————–+————+——-+——————-+———+———+——-+——+——-+

(4).DEPENDENT UNION

UNION中的第二个或后面的SELECT语句,取决于外面的查询

mysql> explain select * from t3 where id in (select id from t3 where id=3952602 union all select id from t3)  ;
+—-+——————–+————+——–+——————-+———+———+——-+——+————————–+
| id | select_type        | table      | type   | possible_keys     | key     | key_len | ref   | rows | Extra                    |
+—-+——————–+————+——–+——————-+———+———+——-+——+————————–+
|  1 | PRIMARY            | t3         | ALL    | NULL              | NULL    | NULL    | NULL  | 1000 | Using where              |
|  2 | DEPENDENT SUBQUERY | t3         | const  | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 | Using index              |
|  3 | DEPENDENT UNION    | t3         | eq_ref | PRIMARY,idx_t3_id | PRIMARY | 4       | func  |    1 | Using where; Using index |
|NULL | UNION RESULT       | <union2,3> | ALL    | NULL              | NULL    | NULL    | NULL  | NULL |                          |
+—-+——————–+————+——–+——————-+———+———+——-+——+————————–+

(4).UNION RESULT

UNION的结果。

mysql> explain select * from t3 where id=3952602 union all select * from t3 ;
+—-+————–+————+——-+——————-+———+———+——-+——+——-+
| id | select_type  | table      | type  | possible_keys     | key     | key_len | ref   | rows | Extra |
+—-+————–+————+——-+——————-+———+———+——-+——+——-+
|  1 | PRIMARY      | t3         | const | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 |       |
|  2 | UNION        | t3         | ALL   | NULL              | NULL    | NULL    | NULL  | 1000 |       |
|NULL | UNION RESULT | <union1,2> | ALL   | NULL              | NULL    | NULL    | NULL  | NULL |       |
+—-+————–+————+——-+——————-+———+———+——-+——+——-+

(5).SUBQUERY

子查询中的第一个SELECT.

mysql> explain select * from t3 where id = (select id from t3 where id=3952602 )  ;
+—-+————-+——-+——-+——————-+———+———+——-+——+————-+
| id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra       |
+—-+————-+——-+——-+——————-+———+———+——-+——+————-+
|  1 | PRIMARY     | t3    | const | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 |             |
|  2 | SUBQUERY    | t3    | const | PRIMARY,idx_t3_id | PRIMARY | 4       |       |    1 | Using index |
+—-+————-+——-+——-+——————-+———+———+——-+——+————-+

(6).  DEPENDENT SUBQUERY

子查询中的第一个SELECT,取决于外面的查询

mysql> explain select id from t3 where id in (select id from t3 where id=3952602 )  ;
+—-+——————–+——-+——-+——————-+———+———+——-+——+————————–+
| id | select_type        | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra                    |
+—-+——————–+——-+——-+——————-+———+———+——-+——+————————–+
|  1 | PRIMARY            | t3    | index | NULL              | PRIMARY | 4       | NULL  | 1000 | Using where; Using index |
|  2 | DEPENDENT SUBQUERY | t3    | const | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 | Using index              |
+—-+——————–+——-+——-+——————-+———+———+——-+——+————————–+
(7).DERIVED

派生表的SELECT(FROM子句的子查询)

mysql> explain select * from (select * from t3 where id=3952602) a ;
+—-+————-+————+——–+——————-+———+———+——+——+——-+
| id | select_type | table      | type   | possible_keys     | key     | key_len | ref  | rows | Extra |
+—-+————-+————+——–+——————-+———+———+——+——+——-+
|  1 | PRIMARY     | <derived2> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  2 | DERIVED     | t3         | const  | PRIMARY,idx_t3_id | PRIMARY | 4       |      |    1 |       |
+—-+————-+————+——–+——————-+———+———+——+——+——-+
3.table

显示这一行的数据是关于哪张表的.
有时不是真实的表名字,看到的是derivedx(x是个数字,我的理解是第几步执行的结果)

mysql> explain select * from (select * from ( select * from t3 where id=3952602) a) b;
+—-+————-+————+——–+——————-+———+———+——+——+——-+
| id | select_type | table      | type   | possible_keys     | key     | key_len | ref  | rows | Extra |
+—-+————-+————+——–+——————-+———+———+——+——+——-+
|  1 | PRIMARY     | <derived2> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  2 | DERIVED     | <derived3> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  3 | DERIVED     | t3         | const  | PRIMARY,idx_t3_id | PRIMARY | 4       |      |    1 |       |
+—-+————-+————+——–+——————-+———+———+——+——+——-+

4.type

这列很重要,显示了连接使用了哪种类别,有无使用索引.
从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL

(1).system

这是const联接类型的一个特例。表仅有一行满足条件.如下(t3表上的id是 primary key)

mysql> explain select * from (select * from t3 where id=3952602) a ;
+—-+————-+————+——–+——————-+———+———+——+——+——-+
| id | select_type | table      | type   | possible_keys     | key     | key_len | ref  | rows | Extra |
+—-+————-+————+——–+——————-+———+———+——+——+——-+
|  1 | PRIMARY     | <derived2> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  2 | DERIVED     | t3         | const  | PRIMARY,idx_t3_id | PRIMARY | 4       |      |    1 |       |
+—-+————-+————+——–+——————-+———+———+——+——+——-+

(2).const

表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!

const用于用常数值比较PRIMARY KEY或UNIQUE索引的所有部分时。在下面的查询中,tbl_name可以用于const表:
SELECT * from tbl_name WHERE primary_key=1;
SELECT * from tbl_name WHERE primary_key_part1=1和 primary_key_part2=2;

例如:
mysql> explain select * from t3 where id=3952602;
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
| id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
|  1 | SIMPLE      | t3    | const | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 |       |
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
(3). eq_ref

对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。它用在一个索引的所有部分被联接使用并且索引是UNIQUE或PRIMARY KEY。

eq_ref可以用于使用= 操作符比较的带索引的列。比较值可以为常量或一个使用在该表前面所读取的表的列的表达式。

在下面的例子中,MySQL可以使用eq_ref联接来处理ref_tables:

SELECT * FROM ref_table,other_table
WHERE ref_table.key_column=other_table.column;

SELECT * FROM ref_table,other_table
WHERE ref_table.key_column_part1=other_table.column
AND ref_table.key_column_part2=1;

例如
mysql> create unique index  idx_t3_id on t3(id) ;
Query OK, 1000 rows affected (0.03 sec)
Records: 1000  Duplicates: 0  Warnings: 0

mysql> explain select * from t3,t4 where t3.id=t4.accountid;
+—-+————-+——-+——–+——————-+———–+———+———————-+——+——-+
| id | select_type | table | type   | possible_keys     | key       | key_len | ref                  | rows | Extra |
+—-+————-+——-+——–+——————-+———–+———+———————-+——+——-+
|  1 | SIMPLE      | t4    | ALL    | NULL              | NULL      | NULL    | NULL                 | 1000 |       |
|  1 | SIMPLE      | t3    | eq_ref | PRIMARY,idx_t3_id | idx_t3_id | 4       | dbatest.t4.accountid |    1 |       |
+—-+————-+——-+——–+——————-+———–+———+———————-+——+——-+

(4).ref

对 于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。如果联接只使用键的最左边的前缀,或如果键不是UNIQUE或PRIMARY KEY(换句话说,如果联接不能基于关键字选择单个行的话),则使用ref。如果使用的键仅仅匹配少量行,该联接类型是不错的。

ref可以用于使用=或<=>操作符的带索引的列。

在下面的例子中,MySQL可以使用ref联接来处理ref_tables:

SELECT * FROM ref_table WHERE key_column=expr;

SELECT * FROM ref_table,other_table
WHERE ref_table.key_column=other_table.column;

SELECT * FROM ref_table,other_table
WHERE ref_table.key_column_part1=other_table.column
AND ref_table.key_column_part2=1;

例如:

mysql> drop index idx_t3_id on t3;
Query OK, 1000 rows affected (0.03 sec)
Records: 1000  Duplicates: 0  Warnings: 0

mysql> create index idx_t3_id on t3(id) ;
Query OK, 1000 rows affected (0.04 sec)
Records: 1000  Duplicates: 0  Warnings: 0

mysql> explain select * from t3,t4 where t3.id=t4.accountid;
+—-+————-+——-+——+——————-+———–+———+———————-+——+——-+
| id | select_type | table | type | possible_keys     | key       | key_len | ref                  | rows | Extra |
+—-+————-+——-+——+——————-+———–+———+———————-+——+——-+
|  1 | SIMPLE      | t4    | ALL  | NULL              | NULL      | NULL    | NULL                 | 1000 |       |
|  1 | SIMPLE      | t3    | ref  | PRIMARY,idx_t3_id | idx_t3_id | 4       | dbatest.t4.accountid |    1 |       |
+—-+————-+——-+——+——————-+———–+———+———————-+——+——-+
2 rows in set (0.00 sec)

(5).  ref_or_null

该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL值的行。在解决子查询中经常使用该联接类型的优化。

在下面的例子中,MySQL可以使用ref_or_null联接来处理ref_tables:

SELECT * FROM ref_table
WHERE key_column=expr OR key_column IS NULL;

(6). index_merge

该联接类型表示使用了索引合并优化方法。在这种情况下,key列包含了使用的索引的清单,key_len包含了使用的索引的最长的关键元素。

例如:
mysql> explain select * from t4 where id=3952602 or accountid=31754306 ;
+—-+————-+——-+————-+—————————-+—————————-+———+——+——+——————————————————+
| id | select_type | table | type        | possible_keys              | key                        | key_len | ref  | rows | Extra                                                |
+—-+————-+——-+————-+—————————-+—————————-+———+——+——+——————————————————+
|  1 | SIMPLE      | t4    | index_merge | idx_t4_id,idx_t4_accountid | idx_t4_id,idx_t4_accountid | 4,4     | NULL |    2 | Using union(idx_t4_id,idx_t4_accountid); Using where |
+—-+————-+——-+————-+—————————-+—————————-+———+——+——+——————————————————+
1 row in set (0.00 sec)

(7). unique_subquery

该类型替换了下面形式的IN子查询的ref:

value IN (SELECT primary_key FROM single_table WHERE some_expr)
unique_subquery是一个索引查找函数,可以完全替换子查询,效率更高。

(8).index_subquery

该联接类型类似于unique_subquery。可以替换IN子查询,但只适合下列形式的子查询中的非唯一索引:

value IN (SELECT key_column FROM single_table WHERE some_expr)

(9).range

只检索给定范围的行,使用一个索引来选择行。key列显示使用了哪个索引。key_len包含所使用索引的最长关键元素。在该类型中ref列为NULL。

当使用=、<>、>、>=、<、<=、IS NULL、<=>、BETWEEN或者IN操作符,用常量比较关键字列时,可以使用range

mysql> explain select * from t3 where id=3952602 or id=3952603 ;
+—-+————-+——-+——-+——————-+———–+———+——+——+————-+
| id | select_type | table | type  | possible_keys     | key       | key_len | ref  | rows | Extra       |
+—-+————-+——-+——-+——————-+———–+———+——+——+————-+
|  1 | SIMPLE      | t3    | range | PRIMARY,idx_t3_id | idx_t3_id | 4       | NULL |    2 | Using where |
+—-+————-+——-+——-+——————-+———–+———+——+——+————-+
1 row in set (0.02 sec)

(10).index

该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。

当查询只使用作为单索引一部分的列时,MySQL可以使用该联接类型。

(11). ALL

对于每个来自于先前的表的行组合,进行完整的表扫描。如果表是第一个没标记const的表,这通常不好,并且通常在它情况下很差。通常可以增加更多的索引而不要使用ALL,使得行能基于前面的表中的常数值或列值被检索出。
5.possible_keys

possible_keys列指出MySQL能使用哪个索引在该表中找到行。注意,该列完全独立于EXPLAIN输出所示的表的次序。这意味着在possible_keys中的某些键实际上不能按生成的表次序使用。

如果该列是NULL,则没有相关的索引。在这种情况下,可以通过检查WHERE子句看是否它引用某些列或适合索引的列来提高你的查询性能。如果是这样,创造一个适当的索引并且再次用EXPLAIN检查查询

6. key

key列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

7.key_len

key_len列显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。
使用的索引的长度。在不损失精确性的情况下,长度越短越好

8. ref

ref列显示使用哪个列或常数与key一起从表中选择行。

9. rows

rows列显示MySQL认为它执行查询时必须检查的行数。

10. Extra

该列包含MySQL解决查询的详细信息,下面详细.

(1).Distinct
一旦MYSQL找到了与行相联合匹配的行,就不再搜索了

(2).Not exists
MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,

就不再搜索了

(3).Range checked for each

Record(index map:#)
没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一

(4).Using filesort
看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行

(5).Using index
列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候

(6).Using temporary
看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

(7).Using where
使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题

数据库

mysql表字段多少限定

October 20th, 2009

我们知道在Oracle中一个表上的字段最多只能有1000个,那么在mysql,一个表上能有多少个字段呢?
今天在PUB上看到一个贴子(http://www.itpub.net/thread-1045069-1-1.html)于是查了下文档,没有发现相关说明.
测试了一下,发现了一个”奇怪”的数字–2599,不知和版本是否有关系?
测试过程

1.创建一个测试表

mysql> select version();
+—————–+
| version()       |
+—————–+
| 5.0.26-standard |
+—————–+
1 row in set (0.00 sec)

mysql> create table t1(id int) ;
Query OK, 0 rows affected (0.02 sec)

mysql> desc t1;
+——-+———+——+—–+———+——-+
| Field | Type    | Null | Key | Default | Extra |
+——-+———+——+—–+———+——-+
| id    | int(11) | YES  |     | NULL    |       |
+——-+———+——+—–+———+——-+
1 row in set (0.00 sec)

2.书写一个测试脚本

[root@dbatest1 shell]# cat add_col.sh
#!/bin/sh

x=1
while [ $x -le 3000 ]
do
mysql -uroot -pabc123 -Ddb1 << EOF >> /root/shell/add_col_log.log
alter table t1 add column f$x char(1);
EOF
x=`expr $x + 1`
done
[root@dbatest1 shell]#

3.发现添加到2598是可以成功的.到2599时就失败了

+ x=2598
+ ‘[' 2598 -le 3000 ']‘
+ mysql -uroot -pabc123 -Ddb1
++ expr 2598 + 1
+ x=2599
+ ‘[' 2599 -le 3000 ']‘
+ mysql -uroot -pabc123 -Ddb1
ERROR 1117 (HY000) at line 1: Too many columns

4.DESC表,确认.最多还是2599列

mysql> desc t1;
+——-+———+——+—–+———+——-+
| Field | Type    | Null | Key | Default | Extra |
+——-+———+——+—–+———+——-+
| id    | int(11) | YES  |     | NULL    |       |
| f1    | char(1) | YES  |     | NULL    |       |
| f2    | char(1) | YES  |     | NULL    |       |
| f3    | char(1) | YES  |     | NULL    |       |
| f4    | char(1) | YES  |     | NULL    |       |
| f5    | char(1) | YES  |     | NULL    |       |
| f6    | char(1) | YES  |     | NULL    |       |
| f7    | char(1) | YES  |     | NULL    |       |
| f8    | char(1) | YES  |     | NULL    |       |
| f9    | char(1) | YES  |     | NULL    |       |
| f10   | char(1) | YES  |     | NULL    |       |
| f11   | char(1) | YES  |     | NULL    |       |
| f12   | char(1) | YES  |     | NULL    |       |
| f13   | char(1) | YES  |     | NULL    |       |
| f14   | char(1) | YES  |     | NULL    |       |
| f15   | char(1) | YES  |     | NULL    |       |
| f16   | char(1) | YES  |     | NULL    |       |
| f17   | char(1) | YES  |     | NULL    |       |
| f18   | char(1) | YES  |     | NULL    |       |
| f19   | char(1) | YES  |     | NULL    |       |
| f20   | char(1) | YES  |     | NULL    |       |
| f21   | char(1) | YES  |     | NULL    |       |
| f22   | char(1) | YES  |     | NULL    |       |
| f23   | char(1) | YES  |     | NULL    |       |
| f24   | char(1) | YES  |     | NULL    |       |
| f25   | char(1) | YES  |     | NULL    |       |
| f26   | char(1) | YES  |     | NULL    |       |
| f27   | char(1) | YES  |     | NULL    |       |
| f28   | char(1) | YES  |     | NULL    |       |
| f29   | char(1) | YES  |     | NULL    |       |
| f30   | char(1) | YES  |     | NULL    |       |
| f31   | char(1) | YES  |     | NULL    |       |
| f32   | char(1) | YES  |     | NULL    |       |
| f33   | char(1) | YES  |     | NULL    |       |
| f34   | char(1) | YES  |     | NULL    |       |
| f35   | char(1) | YES  |     | NULL    |       |
| f36   | char(1) | YES  |     | NULL    |       |
| f37   | char(1) | YES  |     | NULL    |       |
| f38   | char(1) | YES  |     | NULL    |       |
| f39   | char(1) | YES  |     | NULL    |       |
| f40   | char(1) | YES  |     | NULL    |       |
| f41   | char(1) | YES  |     | NULL    |       |
| f42   | char(1) | YES  |     | NULL    |       |
| f43   | char(1) | YES  |     | NULL    |       |
| f44   | char(1) | YES  |     | NULL    |       |
| f45   | char(1) | YES  |     | NULL    |       |
| f46   | char(1) | YES  |     | NULL    |       |
| f47   | char(1) | YES  |     | NULL    |       |
| f48   | char(1) | YES  |     | NULL    |       |
| f49   | char(1) | YES  |     | NULL    |       |
| f50   | char(1) | YES  |     | NULL    |       |
| f51   | char(1) | YES  |     | NULL    |       |
| f52   | char(1) | YES  |     | NULL    |       |
| f53   | char(1) | YES  |     | NULL    |       |
| f54   | char(1) | YES  |     | NULL    |       |
| f55   | char(1) | YES  |     | NULL    |       |
| f56   | char(1) | YES  |     | NULL    |       |
| f57   | char(1) | YES  |     | NULL    |       |
| f58   | char(1) | YES  |     | NULL    |       |
| f59   | char(1) | YES  |     | NULL    |       |
| f60   | char(1) | YES  |     | NULL    |       |
| f61   | char(1) | YES  |     | NULL    |       |
| f62   | char(1) | YES  |     | NULL    |       |
| f63   | char(1) | YES  |     | NULL    |       |
| f64   | char(1) | YES  |     | NULL    |       |
| f65   | char(1) | YES  |     | NULL    |       |
| f66   | char(1) | YES  |     | NULL    |       |
| f67   | char(1) | YES  |     | NULL    |       |
| f68   | char(1) | YES  |     | NULL    |       |
| f69   | char(1) | YES  |     | NULL    |       |
| f70   | char(1) | YES  |     | NULL    |       |
| f71   | char(1) | YES  |     | NULL    |       |
| f72   | char(1) | YES  |     | NULL    |       |
| f73   | char(1) | YES  |     | NULL    |       |
| f74   | char(1) | YES  |     | NULL    |       |
| f75   | char(1) | YES  |     | NULL    |       |
| f76   | char(1) | YES  |     | NULL    |       |
| f77   | char(1) | YES  |     | NULL    |       |
| f78   | char(1) | YES  |     | NULL    |       |
| f79   | char(1) | YES  |     | NULL    |       |
| f80   | char(1) | YES  |     | NULL    |       |
| f81   | char(1) | YES  |     | NULL    |       |
| f82   | char(1) | YES  |     | NULL    |       |
| f83   | char(1) | YES  |     | NULL    |       |
| f84   | char(1) | YES  |     | NULL    |       |
| f85   | char(1) | YES  |     | NULL    |       |
| f86   | char(1) | YES  |     | NULL    |       |
| f87   | char(1) | YES  |     | NULL    |       |
| f88   | char(1) | YES  |     | NULL    |       |
| f89   | char(1) | YES  |     | NULL    |       |
| f90   | char(1) | YES  |     | NULL    |       |
| f91   | char(1) | YES  |     | NULL    |       |
| f92   | char(1) | YES  |     | NULL    |       |
| f93   | char(1) | YES  |     | NULL    |       |
| f94   | char(1) | YES  |     | NULL    |       |
| f95   | char(1) | YES  |     | NULL    |       |
| f96   | char(1) | YES  |     | NULL    |       |
| f97   | char(1) | YES  |     | NULL    |       |
| f98   | char(1) | YES  |     | NULL    |       |
| f99   | char(1) | YES  |     | NULL    |       |
| f100  | char(1) | YES  |     | NULL    |       |
| f101  | char(1) | YES  |     | NULL    |       |
| f102  | char(1) | YES  |     | NULL    |       |
| f103  | char(1) | YES  |     | NULL    |       |
| f104  | char(1) | YES  |     | NULL    |       |
| f105  | char(1) | YES  |     | NULL    |       |
| f106  | char(1) | YES  |     | NULL    |       |
| f107  | char(1) | YES  |     | NULL    |       |
| f108  | char(1) | YES  |     | NULL    |       |
| f109  | char(1) | YES  |     | NULL    |       |
| f110  | char(1) | YES  |     | NULL    |       |
| f111  | char(1) | YES  |     | NULL    |       |
| f112  | char(1) | YES  |     | NULL    |       |
| f113  | char(1) | YES  |     | NULL    |       |
| f114  | char(1) | YES  |     | NULL    |       |
| f115  | char(1) | YES  |     | NULL    |       |
| f116  | char(1) | YES  |     | NULL    |       |
| f117  | char(1) | YES  |     | NULL    |       |
| f118  | char(1) | YES  |     | NULL    |       |
| f119  | char(1) | YES  |     | NULL    |       |
| f120  | char(1) | YES  |     | NULL    |       |
| f121  | char(1) | YES  |     | NULL    |       |
| f122  | char(1) | YES  |     | NULL    |       |
| f123  | char(1) | YES  |     | NULL    |       |
| f124  | char(1) | YES  |     | NULL    |       |
| f125  | char(1) | YES  |     | NULL    |       |
| f126  | char(1) | YES  |     | NULL    |       |
| f127  | char(1) | YES  |     | NULL    |       |
| f128  | char(1) | YES  |     | NULL    |       |
| f129  | char(1) | YES  |     | NULL    |       |
| f130  | char(1) | YES  |     | NULL    |       |
| f131  | char(1) | YES  |     | NULL    |       |
| f132  | char(1) | YES  |     | NULL    |       |
| f133  | char(1) | YES  |     | NULL    |       |
| f134  | char(1) | YES  |     | NULL    |       |
| f135  | char(1) | YES  |     | NULL    |       |
| f136  | char(1) | YES  |     | NULL    |       |
| f137  | char(1) | YES  |     | NULL    |       |
| f138  | char(1) | YES  |     | NULL    |       |
| f139  | char(1) | YES  |     | NULL    |       |
| f140  | char(1) | YES  |     | NULL    |       |
| f141  | char(1) | YES  |     | NULL    |       |
| f142  | char(1) | YES  |     | NULL    |       |
| f143  | char(1) | YES  |     | NULL    |       |
| f144  | char(1) | YES  |     | NULL    |       |
| f145  | char(1) | YES  |     | NULL    |       |
| f146  | char(1) | YES  |     | NULL    |       |
| f147  | char(1) | YES  |     | NULL    |       |
| f148  | char(1) | YES  |     | NULL    |       |
| f149  | char(1) | YES  |     | NULL    |       |
| f150  | char(1) | YES  |     | NULL    |       |
| f151  | char(1) | YES  |     | NULL    |       |
| f152  | char(1) | YES  |     | NULL    |       |
| f153  | char(1) | YES  |     | NULL    |       |
| f154  | char(1) | YES  |     | NULL    |       |
| f155  | char(1) | YES  |     | NULL    |       |
| f156  | char(1) | YES  |     | NULL    |       |
| f157  | char(1) | YES  |     | NULL    |       |
| f158  | char(1) | YES  |     | NULL    |       |
| f159  | char(1) | YES  |     | NULL    |       |
| f160  | char(1) | YES  |     | NULL    |       |
| f161  | char(1) | YES  |     | NULL    |       |
| f162  | char(1) | YES  |     | NULL    |       |
| f163  | char(1) | YES  |     | NULL    |       |
| f164  | char(1) | YES  |     | NULL    |       |
| f165  | char(1) | YES  |     | NULL    |       |
| f166  | char(1) | YES  |     | NULL    |       |
| f167  | char(1) | YES  |     | NULL    |       |
| f168  | char(1) | YES  |     | NULL    |       |
| f169  | char(1) | YES  |     | NULL    |       |
| f170  | char(1) | YES  |     | NULL    |       |
| f171  | char(1) | YES  |     | NULL    |       |
| f172  | char(1) | YES  |     | NULL    |       |
| f173  | char(1) | YES  |     | NULL    |       |
| f174  | char(1) | YES  |     | NULL    |       |
| f175  | char(1) | YES  |     | NULL    |       |
| f176  | char(1) | YES  |     | NULL    |       |
| f177  | char(1) | YES  |     | NULL    |       |
| f178  | char(1) | YES  |     | NULL    |       |
| f179  | char(1) | YES  |     | NULL    |       |
| f180  | char(1) | YES  |     | NULL    |       |
| f181  | char(1) | YES  |     | NULL    |       |
| f182  | char(1) | YES  |     | NULL    |       |
| f183  | char(1) | YES  |     | NULL    |       |
| f184  | char(1) | YES  |     | NULL    |       |
| f185  | char(1) | YES  |     | NULL    |       |
| f186  | char(1) | YES  |     | NULL    |       |
| f187  | char(1) | YES  |     | NULL    |       |
| f188  | char(1) | YES  |     | NULL    |       |
| f189  | char(1) | YES  |     | NULL    |       |
| f190  | char(1) | YES  |     | NULL    |       |
| f191  | char(1) | YES  |     | NULL    |       |
| f192  | char(1) | YES  |     | NULL    |       |
| f193  | char(1) | YES  |     | NULL    |       |
| f194  | char(1) | YES  |     | NULL    |       |
| f195  | char(1) | YES  |     | NULL    |       |
| f196  | char(1) | YES  |     | NULL    |       |
| f197  | char(1) | YES  |     | NULL    |       |
| f198  | char(1) | YES  |     | NULL    |       |
| f199  | char(1) | YES  |     | NULL    |       |
| f200  | char(1) | YES  |     | NULL    |       |
| f201  | char(1) | YES  |     | NULL    |       |
| f202  | char(1) | YES  |     | NULL    |       |
| f203  | char(1) | YES  |     | NULL    |       |
| f204  | char(1) | YES  |     | NULL    |       |
| f205  | char(1) | YES  |     | NULL    |       |
| f206  | char(1) | YES  |     | NULL    |       |
| f207  | char(1) | YES  |     | NULL    |       |
| f208  | char(1) | YES  |     | NULL    |       |
| f209  | char(1) | YES  |     | NULL    |       |
| f210  | char(1) | YES  |     | NULL    |       |
| f211  | char(1) | YES  |     | NULL    |       |
| f212  | char(1) | YES  |     | NULL    |       |
| f213  | char(1) | YES  |     | NULL    |       |
| f214  | char(1) | YES  |     | NULL    |       |
| f215  | char(1) | YES  |     | NULL    |       |
| f216  | char(1) | YES  |     | NULL    |       |
| f217  | char(1) | YES  |     | NULL    |       |
| f218  | char(1) | YES  |     | NULL    |       |
| f219  | char(1) | YES  |     | NULL    |       |
| f220  | char(1) | YES  |     | NULL    |       |
| f221  | char(1) | YES  |     | NULL    |       |
| f222  | char(1) | YES  |     | NULL    |       |
| f223  | char(1) | YES  |     | NULL    |       |
| f224  | char(1) | YES  |     | NULL    |       |
| f225  | char(1) | YES  |     | NULL    |       |
| f226  | char(1) | YES  |     | NULL    |       |
| f227  | char(1) | YES  |     | NULL    |       |
| f228  | char(1) | YES  |     | NULL    |       |
| f229  | char(1) | YES  |     | NULL    |       |
| f230  | char(1) | YES  |     | NULL    |       |
| f231  | char(1) | YES  |     | NULL    |       |
| f232  | char(1) | YES  |     | NULL    |       |
| f233  | char(1) | YES  |     | NULL    |       |
| f234  | char(1) | YES  |     | NULL    |       |
| f235  | char(1) | YES  |     | NULL    |       |
| f236  | char(1) | YES  |     | NULL    |       |
| f237  | char(1) | YES  |     | NULL    |       |
| f238  | char(1) | YES  |     | NULL    |       |
| f239  | char(1) | YES  |     | NULL    |       |
| f240  | char(1) | YES  |     | NULL    |       |
| f241  | char(1) | YES  |     | NULL    |       |
| f242  | char(1) | YES  |     | NULL    |       |
| f243  | char(1) | YES  |     | NULL    |       |
| f244  | char(1) | YES  |     | NULL    |       |
| f245  | char(1) | YES  |     | NULL    |       |
| f246  | char(1) | YES  |     | NULL    |       |
| f247  | char(1) | YES  |     | NULL    |       |
| f248  | char(1) | YES  |     | NULL    |       |
| f249  | char(1) | YES  |     | NULL    |       |
| f250  | char(1) | YES  |     | NULL    |       |
| f251  | char(1) | YES  |     | NULL    |       |
| f252  | char(1) | YES  |     | NULL    |       |
| f253  | char(1) | YES  |     | NULL    |       |
| f254  | char(1) | YES  |     | NULL    |       |
| f255  | char(1) | YES  |     | NULL    |       |
| f256  | char(1) | YES  |     | NULL    |       |
| f257  | char(1) | YES  |     | NULL    |       |
| f258  | char(1) | YES  |     | NULL    |       |
| f259  | char(1) | YES  |     | NULL    |       |
| f260  | char(1) | YES  |     | NULL    |       |
| f261  | char(1) | YES  |     | NULL    |       |
| f262  | char(1) | YES  |     | NULL    |       |
| f263  | char(1) | YES  |     | NULL    |       |
| f264  | char(1) | YES  |     | NULL    |       |
| f265  | char(1) | YES  |     | NULL    |       |
| f266  | char(1) | YES  |     | NULL    |       |
| f267  | char(1) | YES  |     | NULL    |       |
| f268  | char(1) | YES  |     | NULL    |       |
| f269  | char(1) | YES  |     | NULL    |       |
| f270  | char(1) | YES  |     | NULL    |       |
| f271  | char(1) | YES  |     | NULL    |       |
| f272  | char(1) | YES  |     | NULL    |       |
| f273  | char(1) | YES  |     | NULL    |       |
| f274  | char(1) | YES  |     | NULL    |       |
| f275  | char(1) | YES  |     | NULL    |       |
| f276  | char(1) | YES  |     | NULL    |       |
| f277  | char(1) | YES  |     | NULL    |       |
| f278  | char(1) | YES  |     | NULL    |       |
| f279  | char(1) | YES  |     | NULL    |       |
| f280  | char(1) | YES  |     | NULL    |       |
| f281  | char(1) | YES  |     | NULL    |       |
| f282  | char(1) | YES  |     | NULL    |       |
| f283  | char(1) | YES  |     | NULL    |       |
| f284  | char(1) | YES  |     | NULL    |       |
| f285  | char(1) | YES  |     | NULL    |       |
| f286  | char(1) | YES  |     | NULL    |       |
| f287  | char(1) | YES  |     | NULL    |       |
| f288  | char(1) | YES  |     | NULL    |       |
| f289  | char(1) | YES  |     | NULL    |       |
| f290  | char(1) | YES  |     | NULL    |       |
| f291  | char(1) | YES  |     | NULL    |       |
| f292  | char(1) | YES  |     | NULL    |       |
| f293  | char(1) | YES  |     | NULL    |       |
| f294  | char(1) | YES  |     | NULL    |       |
| f295  | char(1) | YES  |     | NULL    |       |
| f296  | char(1) | YES  |     | NULL    |       |
| f297  | char(1) | YES  |     | NULL    |       |
| f298  | char(1) | YES  |     | NULL    |       |
| f299  | char(1) | YES  |     | NULL    |       |
| f300  | char(1) | YES  |     | NULL    |       |
| f301  | char(1) | YES  |     | NULL    |       |
| f302  | char(1) | YES  |     | NULL    |       |
| f303  | char(1) | YES  |     | NULL    |       |
| f304  | char(1) | YES  |     | NULL    |       |
| f305  | char(1) | YES  |     | NULL    |       |
| f306  | char(1) | YES  |     | NULL    |       |
| f307  | char(1) | YES  |     | NULL    |       |
| f308  | char(1) | YES  |     | NULL    |       |
| f309  | char(1) | YES  |     | NULL    |       |
| f310  | char(1) | YES  |     | NULL    |       |
| f311  | char(1) | YES  |     | NULL    |       |
| f312  | char(1) | YES  |     | NULL    |       |
| f313  | char(1) | YES  |     | NULL    |       |
| f314  | char(1) | YES  |     | NULL    |       |
| f315  | char(1) | YES  |     | NULL    |       |
| f316  | char(1) | YES  |     | NULL    |       |
| f317  | char(1) | YES  |     | NULL    |       |
| f318  | char(1) | YES  |     | NULL    |       |
| f319  | char(1) | YES  |     | NULL    |       |
| f320  | char(1) | YES  |     | NULL    |       |
| f321  | char(1) | YES  |     | NULL    |       |
| f322  | char(1) | YES  |     | NULL    |       |
| f323  | char(1) | YES  |     | NULL    |       |
| f324  | char(1) | YES  |     | NULL    |       |
| f325  | char(1) | YES  |     | NULL    |       |
| f326  | char(1) | YES  |     | NULL    |       |
| f327  | char(1) | YES  |     | NULL    |       |
| f328  | char(1) | YES  |     | NULL    |       |
| f329  | char(1) | YES  |     | NULL    |       |
| f330  | char(1) | YES  |     | NULL    |       |
| f331  | char(1) | YES  |     | NULL    |       |
| f332  | char(1) | YES  |     | NULL    |       |
| f333  | char(1) | YES  |     | NULL    |       |
| f334  | char(1) | YES  |     | NULL    |       |
| f335  | char(1) | YES  |     | NULL    |       |
| f336  | char(1) | YES  |     | NULL    |       |
| f337  | char(1) | YES  |     | NULL    |       |
| f338  | char(1) | YES  |     | NULL    |       |
| f339  | char(1) | YES  |     | NULL    |       |
| f340  | char(1) | YES  |     | NULL    |       |
| f341  | char(1) | YES  |     | NULL    |       |
| f342  | char(1) | YES  |     | NULL    |       |
| f343  | char(1) | YES  |     | NULL    |       |
| f344  | char(1) | YES  |     | NULL    |       |
| f345  | char(1) | YES  |     | NULL    |       |
| f346  | char(1) | YES  |     | NULL    |       |
| f347  | char(1) | YES  |     | NULL    |       |
| f348  | char(1) | YES  |     | NULL    |       |
| f349  | char(1) | YES  |     | NULL    |       |
| f350  | char(1) | YES  |     | NULL    |       |
| f351  | char(1) | YES  |     | NULL    |       |
| f352  | char(1) | YES  |     | NULL    |       |
| f353  | char(1) | YES  |     | NULL    |       |
| f354  | char(1) | YES  |     | NULL    |       |
| f355  | char(1) | YES  |     | NULL    |       |
| f356  | char(1) | YES  |     | NULL    |       |
| f357  | char(1) | YES  |     | NULL    |       |
| f358  | char(1) | YES  |     | NULL    |       |
| f359  | char(1) | YES  |     | NULL    |       |
| f360  | char(1) | YES  |     | NULL    |       |
| f361  | char(1) | YES  |     | NULL    |       |
| f362  | char(1) | YES  |     | NULL    |       |
| f363  | char(1) | YES  |     | NULL    |       |
| f364  | char(1) | YES  |     | NULL    |       |
| f365  | char(1) | YES  |     | NULL    |       |
| f366  | char(1) | YES  |     | NULL    |       |
| f367  | char(1) | YES  |     | NULL    |       |
| f368  | char(1) | YES  |     | NULL    |       |
| f369  | char(1) | YES  |     | NULL    |       |
| f370  | char(1) | YES  |     | NULL    |       |
| f371  | char(1) | YES  |     | NULL    |       |
| f372  | char(1) | YES  |     | NULL    |       |
| f373  | char(1) | YES  |     | NULL    |       |
| f374  | char(1) | YES  |     | NULL    |       |
| f375  | char(1) | YES  |     | NULL    |       |
| f376  | char(1) | YES  |     | NULL    |       |
| f377  | char(1) | YES  |     | NULL    |       |
| f378  | char(1) | YES  |     | NULL    |       |
| f379  | char(1) | YES  |     | NULL    |       |
| f380  | char(1) | YES  |     | NULL    |       |
| f381  | char(1) | YES  |     | NULL    |       |
| f382  | char(1) | YES  |     | NULL    |       |
| f383  | char(1) | YES  |     | NULL    |       |
| f384  | char(1) | YES  |     | NULL    |       |
| f385  | char(1) | YES  |     | NULL    |       |
| f386  | char(1) | YES  |     | NULL    |       |
| f387  | char(1) | YES  |     | NULL    |       |
| f388  | char(1) | YES  |     | NULL    |       |
| f389  | char(1) | YES  |     | NULL    |       |
| f390  | char(1) | YES  |     | NULL    |       |
| f391  | char(1) | YES  |     | NULL    |       |
| f392  | char(1) | YES  |     | NULL    |       |
| f393  | char(1) | YES  |     | NULL    |       |
| f394  | char(1) | YES  |     | NULL    |       |
| f395  | char(1) | YES  |     | NULL    |       |
| f396  | char(1) | YES  |     | NULL    |       |
| f397  | char(1) | YES  |     | NULL    |       |
| f398  | char(1) | YES  |     | NULL    |       |
| f399  | char(1) | YES  |     | NULL    |       |
| f400  | char(1) | YES  |     | NULL    |       |
| f401  | char(1) | YES  |     | NULL    |       |
| f402  | char(1) | YES  |     | NULL    |       |
| f403  | char(1) | YES  |     | NULL    |       |
| f404  | char(1) | YES  |     | NULL    |       |
| f405  | char(1) | YES  |     | NULL    |       |
| f406  | char(1) | YES  |     | NULL    |       |
| f407  | char(1) | YES  |     | NULL    |       |
| f408  | char(1) | YES  |     | NULL    |       |
| f409  | char(1) | YES  |     | NULL    |       |
| f410  | char(1) | YES  |     | NULL    |       |
| f411  | char(1) | YES  |     | NULL    |       |
| f412  | char(1) | YES  |     | NULL    |       |
| f413  | char(1) | YES  |     | NULL    |       |
| f414  | char(1) | YES  |     | NULL    |       |
| f415  | char(1) | YES  |     | NULL    |       |
| f416  | char(1) | YES  |     | NULL    |       |
| f417  | char(1) | YES  |     | NULL    |       |
| f418  | char(1) | YES  |     | NULL    |       |
| f419  | char(1) | YES  |     | NULL    |       |
| f420  | char(1) | YES  |     | NULL    |       |
| f421  | char(1) | YES  |     | NULL    |       |
| f422  | char(1) | YES  |     | NULL    |       |
| f423  | char(1) | YES  |     | NULL    |       |
| f424  | char(1) | YES  |     | NULL    |       |
| f425  | char(1) | YES  |     | NULL    |       |
| f426  | char(1) | YES  |     | NULL    |       |
| f427  | char(1) | YES  |     | NULL    |       |
| f428  | char(1) | YES  |     | NULL    |       |
| f429  | char(1) | YES  |     | NULL    |       |
| f430  | char(1) | YES  |     | NULL    |       |
| f431  | char(1) | YES  |     | NULL    |       |
| f432  | char(1) | YES  |     | NULL    |       |
| f433  | char(1) | YES  |     | NULL    |       |
| f434  | char(1) | YES  |     | NULL    |       |
| f435  | char(1) | YES  |     | NULL    |       |
| f436  | char(1) | YES  |     | NULL    |       |
| f437  | char(1) | YES  |     | NULL    |       |
| f438  | char(1) | YES  |     | NULL    |       |
| f439  | char(1) | YES  |     | NULL    |       |
| f440  | char(1) | YES  |     | NULL    |       |
| f441  | char(1) | YES  |     | NULL    |       |
| f442  | char(1) | YES  |     | NULL    |       |
| f443  | char(1) | YES  |     | NULL    |       |
| f444  | char(1) | YES  |     | NULL    |       |
| f445  | char(1) | YES  |     | NULL    |       |
| f446  | char(1) | YES  |     | NULL    |       |
| f447  | char(1) | YES  |     | NULL    |       |
| f448  | char(1) | YES  |     | NULL    |       |
| f449  | char(1) | YES  |     | NULL    |       |
| f450  | char(1) | YES  |     | NULL    |       |
| f451  | char(1) | YES  |     | NULL    |       |
| f452  | char(1) | YES  |     | NULL    |       |
| f453  | char(1) | YES  |     | NULL    |       |
| f454  | char(1) | YES  |     | NULL    |       |
| f455  | char(1) | YES  |     | NULL    |       |
| f456  | char(1) | YES  |     | NULL    |       |
| f457  | char(1) | YES  |     | NULL    |       |
| f458  | char(1) | YES  |     | NULL    |       |
| f459  | char(1) | YES  |     | NULL    |       |
| f460  | char(1) | YES  |     | NULL    |       |
| f461  | char(1) | YES  |     | NULL    |       |
| f462  | char(1) | YES  |     | NULL    |       |
| f463  | char(1) | YES  |     | NULL    |       |
| f464  | char(1) | YES  |     | NULL    |       |
| f465  | char(1) | YES  |     | NULL    |       |
| f466  | char(1) | YES  |     | NULL    |       |
| f467  | char(1) | YES  |     | NULL    |       |
| f468  | char(1) | YES  |     | NULL    |       |
| f469  | char(1) | YES  |     | NULL    |       |
| f470  | char(1) | YES  |     | NULL    |       |
| f471  | char(1) | YES  |     | NULL    |       |
| f472  | char(1) | YES  |     | NULL    |       |
| f473  | char(1) | YES  |     | NULL    |       |
| f474  | char(1) | YES  |     | NULL    |       |
| f475  | char(1) | YES  |     | NULL    |       |
| f476  | char(1) | YES  |     | NULL    |       |
| f477  | char(1) | YES  |     | NULL    |       |
| f478  | char(1) | YES  |     | NULL    |       |
| f479  | char(1) | YES  |     | NULL    |       |
| f480  | char(1) | YES  |     | NULL    |       |
| f481  | char(1) | YES  |     | NULL    |       |
| f482  | char(1) | YES  |     | NULL    |       |
| f483  | char(1) | YES  |     | NULL    |       |
| f484  | char(1) | YES  |     | NULL    |       |
| f485  | c

数据库

mysql的出错代码表

October 20th, 2009

mysql的出错代码表,根据mysql的头文件mysql/include/mysqld_error.h整理而成

1005:创建表失败

1006:创建数据库失败

1007:数据库已存在,创建数据库失败

1008:数据库不存在,删除数据库失败

1009:不能删除数据库文件导致删除数据库失败

1010:不能删除数据目录导致删除数据库失败

1011:删除数据库文件失败

1012:不能读取系统表中的记录

1016:文件无法打开,使用后台修复或者使用phpmyadmin进行修复。

1020:记录已被其他用户修改

1021:硬盘剩余空间不足,请加大硬盘可用空间

1022:关键字重复,更改记录失败

1023:关闭时发生错误

1024:读文件错误

1025:更改名字时发生错误

1026:写文件错误

1032:记录不存在

1036:数据表是只读的,不能对它进行修改

1037:系统内存不足,请重启数据库或重启服务器

1038:用于排序的内存不足,请增大排序缓冲区

1040:已到达数据库的最大连接数,请加大数据库可用连接数

1041:系统内存不足

1042:无效的主机名

1043:无效连接

1044:当前用户没有访问数据库的权限

1045:不能连接数据库,用户名或密码错误

1048:字段不能为空

1049:数据库不存在

1050:数据表已存在

1051:数据表不存在

1054:字段不存在

1065:无效的SQL语句,SQL语句为空

1081:不能建立Socket连接

1114:数据表已满,不能容纳任何记录

1116:打开的数据表太多

1129:数据库出现异常,请重启数据库

1130:连接数据库失败,没有连接数据库的权限

1133:数据库用户不存在

1141:当前用户无权访问数据库

1142:当前用户无权访问数据表

1143:当前用户无权访问数据表中的字段

1146:数据表不存在

1147:未定义用户对数据表的访问权限

1149:SQL语句语法错误

1158:网络错误,出现读错误,请检查网络连接状况

1159:网络错误,读超时,请检查网络连接状况

1160:网络错误,出现写错误,请检查网络连接状况

1161:网络错误,写超时,请检查网络连接状况

1062:字段值重复,入库失败

1169:字段值重复,更新记录失败

1177:打开数据表失败

1180:提交事务失败

1181:回滚事务失败

1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库

1205:加锁超时

1211:当前用户没有创建用户的权限

1216:外键约束检查失败,更新子表记录失败

1217:外键约束检查失败,删除或修改主表记录失败

1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器

1227:权限不足,您无权进行此操作

1235:MySQL版本过低,不具有本功能

数据库