table does not exists,select 1 from tablename limit 1
来源:互联网 发布:雅思自测软件 编辑:程序博客网 时间:2024/06/08 11:05
最近在postgreSQL的log里看到了大量的:
table does not exists,select 1 from tablename limit 1
感觉非常奇怪。
1.第一直觉是应该没有业务会写类似:
select 1 from tablename limit 1
这样的代码。搜了一遍业务代码之后,发现确实没有这样的代码存在。
2.报错里面的tablename是临时表的名字,是随机生成的,而非常奇怪的是,几乎每个临时表都会出现在日志中
那么就将产生的原因归结到生成和是使用临时表的代码中。
但是读了一遍代码,几乎每个地方都做了严格的判断,应该是不会出现日志中的类似用法和表不存在的情况的。
3.苦思良久,看到了这样一句:
df.write().jdbc(String.format("jdbc:postgresql://%s:%s/%s", ip, port, database), tbRandomName, props);
主要是将dataframe保存到pg中去,这个API的效果是,如果指定的pg表不存在的话,会帮忙建表;然后想了下,会不会是spark判断它自己需不需要帮忙建表呢,执行的select 1 from tablename limit 1。
4.测试了一下:
果然就会出现:
原来是spark的API做的判断,害得我担心了好半天,以为代码业务逻辑出现问题了。
翻开spark的源码,确实是有这样一句:
0 0
- table does not exists,select 1 from tablename limit 1
- select top 1 * from tablename
- exists 和 select 1 from
- stuff(select ',' + fieldname from tablename for xml path('')),1,1,'')
- select * from tablename where 1=0的意义
- select 1 from table
- select 1 from table
- select 1 from table
- select 1 from table
- select 1 from table
- SqlServer支持 select * from (select *from tablename)
- select top 10 from tablename
- hibernate: “select from TABLENAME”出错
- not exists(select 1 什么意思
- discuz7.2问题SQL:SELECT * FROM [Table]notelist WHERE closed='0' AND app1'-5' LIMIT 1
- not exists 与 select null,select 1的作用
- delete from tablename与drop table tablename区别
- select * from table where 1=1
- Ubuntu Linux解决:修改profile文件无法进入Ubuntu的方法
- 第一天
- React实战-深入源码了解Redux用法之Connect
- 十进制和二进制的转化;原码、反码和补码
- Android RecyclerView自定义点击事件和长按事件
- table does not exists,select 1 from tablename limit 1
- POJ 2417 Discrete Logging (BSGS)
- Codewars 9月刷题
- mvc架构理解
- Windows API Index
- Chrome控制台实用指南
- 二维数组中的查找
- PHP-WAMP 环境与项目配置
- 浅谈Android中MVC、MVP、MVVM模式(三)