在test库下,创建表TCUSTOMERNODE,创建语句为:
create table TCUSTOMERNODE
(
khh VARCHAR(30) not null,
khxm VARCHAR(16) not null,
khqc VARCHAR(80),
nodetype INTEGER not null
);
由于一些原因,想让linux下的MySQL数据库忽略表名大小写,在my.cnf配置参数里添加lower_case_table_names=1参数,(如在配置mycat的情况,需要忽略表名大小写)
重启数据库。
重新进入mysql,想要删除表TCUSTOMERNODE;就会报以下错误。
mysql> show tables;
+-------------------+
| Tables_in_transdb |
+-------------------+
| TCUSTOMERNODE |
| employee |
| orders |
| stock |
| student |
+-------------------+
5 rows in set (0.00 sec)
mysql> drop table tcustomernode;
ERROR 1051 (42S02): Unknown table 'transdb.tcustomernode'
mysql> drop table TCUSTOMERNODE;
ERROR 1051 (42S02): Unknown table 'transdb.tcustomernode'
不管你用大写还是小写表名,都删除不了TCUSTOMERNODE表。
原因是mysql把你要执行的sql语句都转化成小写,把tcustomernode转化成小写,而MySQL库里存的是大写,执行过程,就找不到tcustomernode表了,就出现以上情况,如果你想删除tcustomernode表,把my.cnf配置参数里的参数lower_case_table_names=1注释掉,重启数据库,
再次执行删除,就OK了。
mysql> drop table TCUSTOMERNODE;
Query OK, 0 rows affected (0.12 sec)