MySQL应该学习的6件事

MySQL由于它本身的小巧和操作的高效,在数据库应用中越来越多的被采用。作为LAMP(或WAMP)开发中的重要一环,MySQL值得PHP开发者的重视和认真学习。

1. 每一行命令都是用分号 (;) 作为结束

对于 MySQL ,第一件你必须牢记的是它的每一行命令都是用分号 (;) 作为结束的,但当一行 MySQL 被插入在 PHP 代码中时,最好把后面的分号省略掉,例如:
mysql_query (“INSERT INTO tablename (first_name, last_name) VALUES (‘$first_name’, $last_name’)”);
这是因为 PHP 也是以分号作为一行的结束的,额外的分号有时会让 PHP 的语法分析器搞不明白,所以还是省略掉的好。在这种情况下,虽然省略了分号,但是 PHP 在执行 MySQL 命令时会自动的帮你加上的。

2. 采用关联数组存取查询结果

看下面的例子:
$connection = mysql_connect(“localhost”, “albert”, “shhh”);
mysql_select_db(“winestore”, $connection);
$result = mysql_query(“SELECT cust_id, surname,
firstname FROM customer”, $connection);

while ($row = mysql_fetch_array($result))
{
echo “ID:t{$row[“cust_id”]}n”;
echo “Surnamet{$row[“surname”]}n”;
echo “First name:t{$row[“firstname”]}nn”;
}

函数 mysql_fetch_array() 把查询结果的一行放入数组,可以同时用两种方式引用,例如 cust_id 可以同时用下面两种方式:$row[“cust_id”] 或者$row[0] 。显然,前者的可读性要比后者好多了。

在多表连查中,如果两个列名字一样,最好用别名分开:
SELECT winery.name AS wname, region.name AS rname, FROM winery, region WHERE winery.region_id = region.region_id;
列名的引用为:$row[“wname”] 和 $row[“rname”]

在指定表名和列名的情况下,只引用列名:
SELECT winery.region_id
FROM winery
列名的引用为: $row[“region_id”]

聚集函数的引用就是引用名:
SELECT count(*)
FROM customer;
列名的引用为: $row[“count(*)”]

3. TEXT、DATE、和 SET 数据类型

MySQL 数据表的字段必须有定义一个数据类型。这有大约 25 种选择,大部分都是直接明了的,就不多费口舌了。但有几个有必要提一下。

TEXT 不是一种数据类型,虽然可能有些书上是这么说的。它实际上应该是“ LONG VARCHAR ”或者“ MEDIUMTEXT ”。

DATE 数据类型的格式是 YYYY-MM-DD ,比如: 1999-12-08 。你可以很容易的用 date 函数来得到这种格式的当前系统时间: date(“Y-m-d”)   并且,在 DATA 数据类型之间可以作减法,得到相差的时间天数:
$age = ($current_date – $birthdate);

集合 SET 是一个有用的数据类型,它和枚举 ENUM 有点相似,只不过是 SET 能够保存多个值而 ENUM 只能保存一个值而已。而且, SET 类型最多只能够有 64 个预定的值,而 ENUM 类型却能够处理最多 65,535 个预定义的值。而如果需要有大于 64 个值的集合,该怎么办呢,这时就需要定义多个集合来一起解决这个问题了。

4. 用 mysql_unbuffered_query() 开发快速的脚本

这个函数能用来替换 mysql_query() 函数,主要的区别就是 mysql_unbuffered_query() 执行完查询后马上返回,不需要等待或者对数据库加锁。 但是返回的行数不能用mysql_num_rows() 函数来检查,因为输出的结果集大小未知。

5. 通配符

SQL 的通配符有两种:“ * ”和“ % ”。分别用在不同的情况下。例如:如果你想看到数据库的所有内容,可以像这样来查询:
SELECT * FROM dbname WHERE USER_ID LIKE ‘%’;

这里,两个通配符都被用上了。他们表示相同的意思 ?? 都是用来匹配任何的字符串,但是他们用在不同的上下文中。“ * ”用来匹配字段名,而“ % ”用来匹配字段值。另外一个不容易引起注意的地方是“ % ”通配符需要和 LIKE 关键字一起使用。 还有一个通配符,就是下划线“ _ ”,它代表的意思和上面不同,是用来匹配任何单个的字符的。

6. NOT NULL 和空记录

如果用户在没有填任何东西的情况下按了 submit 按钮,会怎样呢?如果你确实需要一个值,那么可以用客户端脚本或者服务器端脚本来进行数据验证。但是,在数据库中却是允许一些字段被空出来什么也不填。对此类纪录, MySQL 将要为之执行一些事情:插入值 NULL ,即缺省的操作。
如果你在字段定义中为之声明了 NOT NULL (在建立或者修改这个字段的时候), MySQL 将把这个字段空出来什么东西也不填。对于一个 ENUM 枚举类型的字段,如果你为之声明了 NOT NULL , MySQL 将把枚举集的第一个值插入到字段中。也就是说, MySQL 把枚举集的第一个值作为这个枚举类型的缺省值。

一个值为 NULL 的纪录和一个空纪录是有一些区别的。 % 通配符可以匹配空纪录,但是却不能匹配 NULL 纪录。在某些时候,这种区别会造成一些意想不到的后果。就我的经验而言,任何字段都应该声明为 NOT NULL 。这样许多的SELECT 查询语句就能够正常运转了。注意在搜索 NULL 时,必须用“ IS ”关键字,而 LIKE 是不会正常工作的。 在最后要提到的是,如果你在加入或者修改一个新的字段之前,数据库中已经有了一些记录了,这时新加入的字段在原来的纪录中的值,可能是 NULL ,也可能为空。这也算是 MySQL 的一个 Bug 吧,所以在这种情况下,使用 SELECT 查询要特别的小心。

 

转自:php100

Centos安装redis及php-redis扩展

Centos安装redis及php-redis扩展

环境:

操作系统:CentOS

php安装目录:/usr/local/php

php.ini配置文件路径:/usr/local/php/etc/php.ini

1.安装redis
官网找到最新安装包
wget http://download.redis.io/releases/redis-2.8.19.tar.gz
tar zxf redis-2.8.19.tar.gz && cd redis-2.8.19
make
make install
将配置文件移动到系统etc下
cp redis.conf /etc/
编辑配置文件
vi /etc/redis.conf
daemonize no
将no改为yes,让redis后台运行
daemonize yes

redis.conf 配置参数:
======================================================
#是否作为守护进程运行
daemonize yes
#如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid
pidfile redis.pid
#绑定主机IP,默认值为127.0.0.1
#bind 127.0.0.1
#Redis默认监听端口
port 6379
#客户端闲置多少秒后,断开连接,默认为300(秒)
timeout 300
#日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning
loglevel verbose
#指定日志输出的文件名,默认值为stdout,也可设为/dev/null屏蔽日志
logfile stdout
#可用数据库数,默认值为16,默认数据库为0
databases 16
#保存数据到disk的策略
#当有一条Keys数据被改变是,900秒刷新到disk一次
save 900 1
#当有10条Keys数据被改变时,300秒刷新到disk一次
save 300 10
#当有1w条keys数据被改变时,60秒刷新到disk一次
save 60 10000
#当dump .rdb数据库的时候是否压缩数据对象
rdbcompression yes
#本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb
#本地数据库存放路径,默认值为 ./
dir ./

###########  Replication #####################
#Redis的复制配置
# slaveof <masterip> <masterport> 当本机为从服务时,设置主服务的IP及端口
# masterauth <master-password> 当本机为从服务时,设置主服务的连接密码

#连接密码
# requirepass foobared

#最大客户端连接数,默认不限制
# maxclients 128
#最大内存使用设置,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。
# maxmemory <bytes>

#是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no
appendonly no
#更新日志文件名,默认值为appendonly.aof
#appendfilename
#更新日志条件,共有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。
# appendfsync always
appendfsync everysec
# appendfsync no

################ VIRTUAL MEMORY ###########
#是否开启VM功能,默认值为no
vm-enabled no
# vm-enabled yes
#虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
vm-swap-file logs/redis.swap
#将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的 (Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0。
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4

############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置Hash表
activerehashing yes

注意:Redis官方文档对VM的使用提出了一些建议:
** 当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.
** 当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.
** 最好使用linux ext3 等对稀疏文件支持比较好的文件系统保存你的swap文件.
** vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数.如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.
======================================================
启动redis
cd ~
mv redis-2.8.19 /usr/local/
/usr/local/bin/redis-server /etc/redis.conf
ps -ef | grep redis|grep -v grep
可以看到redis已经启动.

关闭redis的命令是redis-cli shutdown

关闭某个端口上redis的命令:redis-cli -p 6397 shutdown

2.安装phpredis

wget https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz

tar zxvf phpredis-2.2.4.tar.gz

cd phpredis-2.2.4

/usr/local/php/bin/phpize #用phpize生成configure配置文件

./configure –with-php-config=/usr/local/php/bin/php-config

make

make install

安装完成之后,出现下面的安装路径

/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

配置php支持

vi /usr/local/php/etc/php.ini  #编辑配置文件,在最后一行添加以下内容

添加

extension=”redis.so”

3.查看phpinfo
出现
Redis Support    enabled
表示成功

4.测试代码
<?php

$redis=new Redis();
$redis->connect(‘127.0.0.1’,6379);
$redis->set(‘test’,’hello world!’);
echo $redis->get(‘test’);

?>

Linux上安装Memcached服务

在Linux上安装Memcached服务,并在php中使用

安装memcache服务器端
1. 通过yum安装
yum -y install memcached
#安装完成后执行:
memcached -h
#出现memcached帮助信息说明安装成功

2. 加入启动服务
chkconfig –level 2345 memcached on

3. 配置Memcached
vim /etc/sysconfig/memcached
#文件中内容如下,按需要修改:
PORT=”11211″ #端口
USER=”root” #用户名
MAXCONN=”1024″ #最大连接数
CACHESIZE=”64″ #内存大小
OPTIONS=”” #附加参数

4. 安装libmemached

wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
tar -zxvf libmemcached-1.0.16.tar.gz
cd libmemcached-1.0.16
./configure -prefix=/usr/local/libmemcached -with-memcached
make && make install

5. 安装php-devel

yum install php-devel

如果安装了,会自动跳过。
6. 安装PHP Memcached扩展

wget http://pecl.php.net/get/memcached-2.1.0.tgz
tar -zxvf memcached-2.1.0.tgz
cd memcached-2.1.0
/usr/local/php/bin/phpize
./configure -enable-memcached -with-php-config=/usr/local/php/bin/php-config -with-zlib-dir -with-libmemcached-dir=/usr/local/libmemcached -prefix=/usr/local/phpmemcached
make && make install

注:/usr/local/php/为php安装路径

当前项目中,linux下memcached的启动/结束的方式
默认情况下memcached安装到/usr/local/bin下(看下自己memcached安装在哪儿)。

启动memcached:

/usr/local/memcached/bin/memcached -d -c 10240 -m 1024 -u root

获取运行状态:echo stats | nc localhost 11211(可以查看出pid) 或使用ps -ef|grep memcached
停止memcached:kill -9 pid  (-9表示强制杀死,pid 为进程的进程标识符)
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是1024MB,默认是64MB
-u 是运行Memcache的用户,这里是root
-l 是监听的服务器IP地址,默认应该是本机
-p 是设置Memcache监听的端口,默认是11211,最好是1024以上的端口
-c 选项是最大运行的并发连接数,默认是1024,这里设置了10240,按照你服务器的负载量来设定
-P 是设置保存Memcache的pid文件位置
-h 打印帮助信息
-v 输出警告和错误信息
-vv 打印客户端的请求和返回信息

PHP中使用

需要在php.ini中添加
extension=memcached.so
重启nginx php-fpm或者httpd

查看phpinfo();是否有开启memcached

简单调用代码示例:
<?php
$m  = new  Memcached ();
$m -> addServer ( ‘localhost’ ,  11211 );

var_dump($m -> set ( ‘test’ ,’this is the test’,  60 ));
var_dump($m -> get(‘test’));

?>

MySql启动失败:The server quit without updating PID

MySql启动失败提示类似如下:

ERROR! MySQL server PID file could not be found!
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid)

解决办法:

1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限
解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data”  然后重新启动mysqld!

2.可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9  进程号”杀死,然后重新启动mysqld!

3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !

4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

5.skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6.错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7.selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

PHP验证码类

分享一段PHP验证码相关的类,可以复制到一个php文件,运行查看效果,这款比较简单的字母数字验证码,足够我们平常使用。ttf文件可以去度娘下载

 

<?php
//验证码类
class ValidateCode {
private $charset = ‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789’;//随机因子
private $code;//验证码
private $codelen = 4;//验证码长度
private $width = 130;//宽度
private $height = 50;//高度
private $img;//图形资源句柄
private $font;//指定的字体
private $fontsize = 20;//指定字体大小
private $fontcolor;//指定字体颜色
//构造方法初始化
public function __construct() {
$this->font = dirname(__FILE__).’/elephant.ttf’;//注意字体路径要写对,否则显示不了图片
}
//生成随机码
private function createCode() {
$_len = strlen($this->charset)-1;
for ($i=0;$i<$this->codelen;$i++) {
$this->code .= $this->charset[mt_rand(0,$_len)];
}
}
//生成背景
private function createBg() {
$this->img = imagecreatetruecolor($this->width, $this->height);
$color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
}
//生成文字
private function createFont() {
$_x = $this->width / $this->codelen;
for ($i=0;$i<$this->codelen;$i++) {
$this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
}
}
//生成线条、雪花
private function createLine() {
//线条
for ($i=0;$i<6;$i++) {
$color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
}
//雪花
for ($i=0;$i<100;$i++) {
$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),’*’,$color);
}
}
//输出
private function outPut() {
header(‘Content-type:image/png’);
imagepng($this->img);
imagedestroy($this->img);
}
//对外生成
public function doimg() {
$this->createBg();
$this->createCode();
$this->createLine();
$this->createFont();
$this->outPut();
}
//获取验证码
public function getCode() {
return strtolower($this->code);
}

}
$code=new ValidateCode;
echo $code->doimg();
echo $code->getCode();

?>

炫酷的HTML5动画应用

看到几个比较好看有用的html5 css动画效果,收藏希望对大家有用

HTML5目前已经逐渐成熟,越来越多的Web项目都已经用到了HTML5技术,包括CSS3。本文主要分享了一些最新的HTML5动画应用,大部分都比较炫酷,也有一些比较实用的,并且每一个动画都提供源代码下载。

1、HTML5 Canvas实现画板涂鸦动画应用

这是一款HTML5网络画板,拥有基础的图形绘制功能,相对比较简单,基于canvas,因此非常灵活。

1

2、HTML5堆木头游戏

这款游戏的玩法是将木头堆积起来,多出的部分将被切除,直到下一根木头无法堆放为止。这款HTML5游戏的难点在于待堆放的木头是移动的,因此需要你很好的控制木头下落的位置。

1

3、HTML5 3D立方体图片切换动画

这款HTML5动画可以将图片切分成几个立方体,带有3D的立体效果。

1

4、100多个纯CSS3动画图标

这里总共有100多个纯CSS3实现的动画图标,找找看,总有一个适合你。

20150107101848414

5、HTML5/CSS3动画相册

这款HTML5相册的特点是我们可以将照片随意放置在桌面上,图片可以任意倾斜,看上去很自然。

1

6、HTML5 Canvas模拟衣服撕扯动画

该HTML5动画会捕获到鼠标拖拽的用力程度,从而来判断并实现衣服应该破损的程度,越用力,衣服被撕破的速度越快,赶紧来体验一下这个HTML5动画吧。

20150107101850973

7、jQuery/CSS3带Tooltip的滑杆动画

这是一个带有Tooltip提示框的滑杆,基于jQuery和CSS3,外观样式非常不错。

1

8、5个可爱的CSS3 Loading加载动画

这是一款可爱的CSS3 Loading动画,一共有5种动画类型,每组Loading动画都非常有创意。

1

magento清空数据库log

magento清空数据库log

truncate dataflow_batch_export;
truncate dataflow_batch_import;
truncate log_customer;
truncate log_quote;
truncate log_summary;
truncate log_summary_type;

truncate log_url;
truncate log_url_info;
truncate log_visitor;
truncate log_visitor_info;
truncate log_visitor_online;

truncate report_viewed_product_index;
truncate report_compared_product_index;
truncate report_event;

set foreign_key_checks = 0;
truncate index_process_event;
truncate index_event;
set foreign_key_checks = 1;

超过78%的PHP网站存在漏洞 Perl最安全

Google的开发者大使Anthony Ferrara分析了PHP网站安装的版本号,比较了安全版本和不安全版本的安装比例, 发现只有21.71%的网站是安全的 。 这个数字其实还是乐观的估计,没有考虑没有维护的发行版支持版本。

 

PHP的安全版本包括:5.6.4、5.5.20和5.4.36;而Linux发行版维护的版本包括:5.4.4,5.3.3,5.5.12,5.5.9….等等。相比之下,Perl和Python网站的安全比例要高得多。

Platform % Installs That Are Secure
PERL 82.27%
Python 77.59%
Nginx 64.48%
Apache 61.96%
WordPress 60.45%
Drupal 45.23%
PHP 25.94%

转子phpchina

云服务器,空间强力推荐

云计算(Cloud Computing)是一种能够通过网络随时随地获取高可用计算资源的计算模式。云计算的服务商通过对软硬件资源的虚拟化,将基础资源变成了可以自由调度的“池子”,从而实现资源的按需配给,并做到向客户提供按使用付费的服务;客户可以根据业务的需要动态调整所需的资源,而云服务商也可以提高自己的资源使用效率,降低服务成本,通过多种不同类型的服务方式为用户提供计算、存储和数据业务的支持。

阿里云致力于打造公共、开放的云计算平台。我们将借助技术的创新,不断提升计算能力与规模效益,将云计算变成真正意义上的公共服务。与此同时,我们将通过aliyun.com用互联网的方式使得大家可以便捷的按需获取阿里云计算产品与服务

1.想搭建一个网站!

阿里云服务器(ECS)来帮你!可在开发者服务上找到一站式的建站解决方案。设计师一对一量身设计,打造精美网站。所有网站均部署在云服务器上,服务可靠稳定,可以弹性扩容。用户不用担心IT运维问题,专注于网站运营。

适用于企业展示网站、电子商务网站、信息门户网站、社区类网站等。

2.对数据库的IO要求高!

阿里云关系型数据库(RDS)来帮你!RDS让用户远离数据丢失,通过云服务的方式让关系型数据库管理、操作和扩展变得更加简单,与现有MySQL和SQL Server完全兼容。
ECS+RDS搭配使用可使数据库读写性能倍增,同时产品间内网互通可避免网络瓶颈!

适用于社区网站、电子商务网站、游戏应用、移动应用、SAAS应用等。

3.要做存储!

阿里云开放存储(OSS)来帮你!支持任意数据类型的海量文件存储服务,通过API轻松调用,支持任意时间、地点的数据上传和下载! Server完全兼容。

适合于社区、多媒体分享站、电子商务等各类形式规模的网站及有大规模数据存储需求的游戏、应用等。

4.想开发一款游戏或应用!

阿里云服务器自定义镜像助你快速创建、批量部署云服务器;搭配负载均衡SLB可将多个云服务器连接成应用服务集群,提升应用系统可用性,减少单点故障;搭配开放存储OSS可使开发大容量和高并发系统变得更容易;搭配关系型数据库RDS可使数据库读写(IO)性能倍增,系统运行更流畅。

适用于手游、页游、端游、移动应用等。

 

PS:给大家推荐万网,万网是阿里云旗下产品,买php空间(国内空间、香港空间)、php服务器、域名也很便宜,备案流程也是相当简单。

Mysql关于InnoDB表误删除掉.frm文件,创建提示Table already exist

Mysql关于InnoDB表误删除掉.frm文件,创建之前存在被删除的表会提示Table already exist

在数据库转移,库中有的表需要用到事务,所以引擎设置成了InnoDB,无意间把表的frm文件给删除了,想要删除重建提示创建提示Table already exist,直接创建也会提示此表已经存在,这是因为表在 innodb 内部数据字典中已存在,没有相对应的 .frm 文件,在 innodb 的数据文件中就形成了一个孤表(orphaned table),这时候同名的表示无法创建或者复制粘贴进来的。

解决办法

你可以通过在另外一个数据库中创建或者复制一个相同名字的innodb表,并把.frm拷贝到这个数据库目录下,数据库就会认为这个表存在,刷新看下此表也可以打开查看,再执行其他操作,例如drop table就可以删除掉了。