linux获取sql执行结果,mysql – SQL查询执行 – Windows和Linux上的不同结果

以下是从Hibernate生成的查询(除了我用*替换了字段列表):

select *

from

resource resource0_,

resourceOrganization resourceor1_

where

resource0_.active=1

and resource0_.published=1

and (

resource0_.resourcePublic=1

or resourceor1_.resource_id=resource0_.id

and resourceor1_.organization_id=2

and (

resourceor1_.resource_id=resource0_.id

and resourceor1_.forever=1

or resourceor1_.resource_id=resource0_.id

and (

current_date between resourceor1_.startDate and resourceor1_.endDate

)

)

)

目前我在Windows和Linux数据库中都有200条记录,目前每条记录都有以下情况:

active = 1

发表= 1

resourcePublic = 1

当我在SQL客户端中直接运行时,此SQL查询会在Windows上获取所有匹配的记录,但在Linux上没有.我在Windows和Linux上都有MySQL 5.1.

如果我应用布尔逻辑(true和true以及(true或者其他)),我希望结果是真的.在Windows上确实如此,但在Linux上却是假的!

如果我按以下方式修改查询,它适用于Windows和Linux:

select *

from

resource resource0_

where

resource0_.active=1

and resource0_.published=1

and (

resource0_.resourcePublic=1

)

因此,只有与resourceOrganization相关的条件的存在使得查询在Linux上带来0结果并且我预期因为它是’或’条件的第二部分,其第一部分为真,结果应该是真的.

任何想法为什么这两个操作系统之间的行为差​​异以及为什么显然可以在Linux上工作的原因不一样!

提前致谢!

解决方法:

>检查case sensitivity and collation sets(Collation issues)

>检查table case sensitivity.特别注意,在Windows上,表名不区分大小写,在Linux上它们区分大小写.

>您是否在两个系统上都尝试过一个简单的测试用例?

标签:mysql,sql,linux,windows

来源: https://codeday.me/bug/20190705/1383361.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值