在线编辑器集合 MySQL利用DATE_FORMAT()函数完成字符串到时间类型的转换,时间的格式化
Aug 06

本来在本地测试好的程序(PHP5+mysql4.0),上传到服务器的时候运行出现了下面的错误提示:

mysql #1054错误 - Unknown column .... in 'on clause'

到网上搜索到原因是由于MYSQL数据的问题,因为MYsql5.0要把联合的表用括号包含起来才行:

3.执行查询:

SELECT (c.id, a.id, b.id) FROM A a, B b LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id

这句话执行应该是没有错误的,但是

Mysql 5 下执行则会出错: “ERROR 1054 (42S22): Unknown column ‘a.id’ in ‘on clause’”

因为mysql下有这样一个BUG,要把联合的表用括号包含起来才行:

SELECT (c.id, a.id, b.id) FROM (A a, B b) LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id

但是HQL生成就是这样的语句,怎么办呢?我们可以改变HQL的写法来达成生成另一种SQL语句,以避免这种BUG的出错,select (c.id, a.id, b.id) from C c

Left join c.a a

Left join c.b b

则会生成

SELECT (c.id, a.id, b.id) FROM A a LEFT JOIN B b LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id

这样的话mysql下就不会出错了

来源:http://www.blogjava.net/itvincent/archive/2008/07/25/217531.html

修改后总算是可以了!!呵呵,多学了一招的!

17fav 收藏本文

Related Post

written by admin \\ tags: ,


Leave a Reply