为什么这个查询会抛出错误?

gtlvzcf8  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(349)

这个问题在这里已经有答案了

on子句中的mysql未知列(3个答案)
两年前关门了。
我正在移动一个古老的网站与一个太旧的升级版本的wordpress加上一些自定义php代码到一个较新的服务器。我不是那个创建这个网站的人,我正在尝试做一些必要的最小的修改来让它工作。现在,它抛出了一个mysql错误。以下是有疑问的问题:

SELECT `wp_posts`.`post_title` as title, `wp_posts`.`post_date` as date, `wp_posts`.`post_name` as slug
    FROM `wp_posts`, `wp_categories`
    JOIN `wp_post2cat` ON `wp_posts`.`ID` = `wp_post2cat`.`post_id`
    WHERE wp_categories.cat_name = 'Stories'
    AND `wp_post2cat`.`category_id` = `wp_categories`.`cat_ID`
    ORDER BY date DESC
    LIMIT 0,10;

将此查询粘贴到phpmyadmin会引发以下错误:


# 1054 - Unknown column 'wp_posts.ID' in 'on clause'

这显然不是正确的错误,事实上wp\u posts.id确实存在,而且查询在旧主机上工作(可能运行的是旧版本的mysql)。
那么,既然错误消息是错误的,那么真正的问题是什么呢?
mysql版本: 10.2.13-MariaDB-10.2.13+maria~xenial - mariadb.org ##编辑
针对一条评论,以下是相关表格的结构:

CREATE TABLE `wp_posts` (
 `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 `post_author` bigint(20) NOT NULL DEFAULT 0,
 `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `post_content` longtext NOT NULL,
 `post_title` text NOT NULL,
 `post_category` int(4) NOT NULL DEFAULT 0,
 `post_excerpt` text NOT NULL,
 `post_status` enum('publish','draft','private','static','object','attachment','inherit','future') NOT NULL DEFAULT 'publish',
 `comment_status` enum('open','closed','registered_only') NOT NULL DEFAULT 'open',
 `ping_status` enum('open','closed') NOT NULL DEFAULT 'open',
 `post_password` varchar(20) NOT NULL DEFAULT '',
 `post_name` varchar(200) NOT NULL DEFAULT '',
 `to_ping` text NOT NULL,
 `pinged` text NOT NULL,
 `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `post_content_filtered` text NOT NULL,
 `post_parent` bigint(20) NOT NULL DEFAULT 0,
 `guid` varchar(255) NOT NULL DEFAULT '',
 `menu_order` int(11) NOT NULL DEFAULT 0,
 `post_type` varchar(20) NOT NULL DEFAULT 'post',
 `post_mime_type` varchar(100) NOT NULL DEFAULT '',
 `comment_count` bigint(20) NOT NULL DEFAULT 0,
 PRIMARY KEY (`ID`),
 KEY `post_name` (`post_name`),
 KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=54 DEFAULT CHARSET=utf8

.

CREATE TABLE `wp_categories` (
 `cat_ID` bigint(20) NOT NULL AUTO_INCREMENT,
 `cat_name` varchar(55) NOT NULL DEFAULT '',
 `category_nicename` varchar(200) NOT NULL DEFAULT '',
 `category_description` longtext NOT NULL,
 `category_parent` bigint(20) NOT NULL DEFAULT 0,
 `category_count` bigint(20) NOT NULL DEFAULT 0,
 `link_count` bigint(20) NOT NULL DEFAULT 0,
 `posts_private` tinyint(1) NOT NULL DEFAULT 0,
 `links_private` tinyint(1) NOT NULL DEFAULT 0,
 PRIMARY KEY (`cat_ID`),
 KEY `category_nicename` (`category_nicename`)
) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8

.

CREATE TABLE `wp_post2cat` (
 `rel_id` bigint(20) NOT NULL AUTO_INCREMENT,
 `post_id` bigint(20) NOT NULL DEFAULT 0,
 `category_id` bigint(20) NOT NULL DEFAULT 0,
 PRIMARY KEY (`rel_id`),
 KEY `post_id` (`post_id`,`category_id`)
) ENGINE=MyISAM AUTO_INCREMENT=166 DEFAULT CHARSET=utf8
wxclj1h5

wxclj1h51#

尝试删除 wp_categories 在你的 FROM 并使用 JOIN 换成table。

相关问题