【问题标题】:Error: SQLSTATE[42S22]: Column not found: 1054错误:SQLSTATE [42S22]:未找到列:1054
【发布时间】:2016-08-24 09:54:09
【问题描述】:

当我运行我的烘焙表(WampServer MySQL 数据库)时,我收到此错误:

错误:SQLSTATE[42S22]:找不到列:1054 'on 子句'中的未知列 'Users.user_id'

如果您使用 SQL 关键字作为表列名,您可以在 config/app.php 中为您的数据库连接启用标识符引用。

SQL 查询:

SELECT `Bookmarks`.`id` AS `Bookmarks__id`, 
       `Bookmarks`.`user_id` AS `Bookmarks__user_id`, 
       `Bookmarks`.`title` AS `Bookmarks__title`, 
       `Bookmarks`.`description` AS `Bookmarks__description`, 
       `Bookmarks`.`url` AS `Bookmarks__url`, 
       `Bookmarks`.`created` AS `Bookmarks__created`, 
       `Bookmarks`.`modified` AS `Bookmarks__modified`,
       `Users`.`id` AS `Users__id`, 
       `Users`.`email` AS `Users__email`, 
       `Users`.`password` AS `Users__password`, 
       `Users`.`created` AS `Users__created`, 
       `Users`.`modified` AS `Users__modified` 
FROM `bookmarks` `Bookmarks` 
    INNER JOIN `users` `Users` ON 
            `Users`.`user_id` = (`Bookmarks`.`user_id`) 
LIMIT 20 OFFSET 0

如果您想自定义此错误消息,请创建src\Template\Error\pdo_error.ctp

【问题讨论】:

  • 把它改成Users.id这就是这个列的名字
  • 你为什么要为(Bookmarks.user_id)添加圆括号他们没有用
  • @RiggsFolly 这是一个与 CakePHP 相关的问题。 CakePHP 使用一个查询生成器来生成特定的 SQL,因此 OP 在括号放置等方面对其没有太大影响。有时会出现一些不必要的额外括号,因为编译器不会额外检查它们是否在技术上是必需的。
  • 您的关联和/或表主键配置很可能是错误的,请使用BookmarksTableUsersTable 类的相应initialize() 方法代码更新您的问题。

标签: mysql cakephp-3.0 wampserver


【解决方案1】:

在您的用户表中,主 ID 是 id 而不是 user_id;这就是为什么你得到一个错误。试试这个查询:

SELECT `Bookmarks`.`id` AS `Bookmarks__id`, 
       `Bookmarks`.`user_id` AS `Bookmarks__user_id`, 
       `Bookmarks`.`title` AS `Bookmarks__title`, 
       `Bookmarks`.`description` AS `Bookmarks__description`, 
       `Bookmarks`.`url` AS `Bookmarks__url`, 
       `Bookmarks`.`created` AS `Bookmarks__created`, 
       `Bookmarks`.`modified` AS `Bookmarks__modified`,
       `Users`.`id` AS `Users__id`, 
       `Users`.`email` AS `Users__email`, 
       `Users`.`password` AS `Users__password`, 
       `Users`.`created` AS `Users__created`, 
       `Users`.`modified` AS `Users__modified` 
FROM `bookmarks` `Bookmarks` 
    INNER JOIN `users` `Users` ON 
            `Users`.`id` = `Bookmarks`.`user_id`
LIMIT 20 OFFSET 0

【讨论】:

  • 我认为这就是我 10 分钟前在一个简单的评论中所说的
  • 我看到你也收到了我对括号的评论。
  • 我想我也可以给你一个赞成票,因为你在将它们都转换为答案时是如此彻底,而且提问者可能不会打扰,因为它们早已不复存在。
  • 别人不懂讽刺!
猜你喜欢
  • 2020-05-14
  • 1970-01-01
  • 2016-04-09
  • 1970-01-01
  • 2019-01-13
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多