3

我加入 2 张桌子

例如

表_A
+---------+-----------+------------+
| 用户 ID | 票号 | 用户名 |
+---------+-----------+------------+

表_B
+------------+-------------+
| 票号 | 票名 |
+------------+-------------+

如果我运行以下查询:

选择
  table_A.user_id
, table_A.user_name
, table_B.ticket_name
从表_A
LEFT JOIN table_B ON table_B.ticket_id = table_A.ticket_id
WHERE ticket_id = '1';

在实时服务器上,我们收到错误:“ Column 'ticket_id' in where clause is ambiguous
在测试服务器上,查询被接受。

我知道如何解决错误,那不是问题。

但是,如果我们的测试服务器不接受此查询并且(就像生产服务器一样)抛出错误,我会非常高兴。

有谁知道是否有某种设置会使测试服务器像实时服务器一样抛出错误?

测试服务器上的PS
MySQL 版本:Live 服务器 上的 MySQL 版本:5.0.32-Debian_7etch5-log
5.0.41-community-log

4

3 回答 3

5

MS SQLServer 也有类似的问题,版本 2000 接受一些不明确的查询,而 2005 会抛出错误。基本上较新的版本似乎更严格。

作为一般规则,您应该在测试服务器和生产服务器上使用相同的数据库版本,以避免这种类型的行为,即一段代码在测试机器上工作并在生产中失败。

于 2008-12-03T13:25:21.580 回答
2

你的两台服务器是什么SQL模式?我可以想象一个比另一个更严格。

于 2008-12-03T13:45:11.570 回答
0

我认为 Tomalak 是对的 - MySQL 管理设置中有一个严格模式可以解决您的问题。

我记得您在创建数据库时选择了它,但您可以从管理 GUI 进行调整。

MySQL 目前存在一些重大错误,如果可以的话,您可能需要考虑迁移到 SQL Server Express...

Sun 陷入财务困境,我不确定 MySQL 会如何收场。

于 2008-12-03T13:51:02.480 回答