mysql 临时表操作查询:table doesn‘t exist

3 篇文章 0 订阅
2 篇文章 0 订阅

关于 mysql 临时表操作问题

问题描述:

昨天用php原生SQL 创建一个表后,用think-orm去查询该表,一直提示 table doesn't exist.百思不得其解。

问题排解

  1. 用原生SQL查询时,是有结果的,证明该临时表是创建成功的。但是一用Db::table('temporary_tables')->select()就不行了。
  2. 查了一下资料,think-orm对临时表的查询是和普通表一致的,因此不存在think-orm不能查临时表这一说.
  3. 查了一下临时表的概念:

临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。

这个特点就是我为什么用think-orm查询的时候报错的原因。我的理解:

think-orm 的连接和 $this->db->query的连接不在同一个,产生的会话也不同一个,因此用think-orm去查询this->db->query创建的临时表时,就会报错,因为连接不在同一个。

问题解决

问题解决很简单,统一一下连接即可,因为业务原因,项目以前都是用$this->db->query()操作SQL,后面加入think-orm,因此创建临时表时,用Db::quert()代替$this->db->query()即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值