【问题标题】:WP database error Unknown column ‘wp_’ in ‘field list’ for query SELECT wp_WP数据库错误“字段列表”中的未知列“wp_”用于查询SELECT wp_
【发布时间】:2020-08-23 03:15:47
【问题描述】:

请不要关闭这个问题,它不是重复的,并且解释如何在 MySQL 上使用引号的建议链接对我没有任何作用,因为这个问题在 WP 脚本中。谢谢

我正在尝试在 干净 Windows 2019 Server 虚拟机上安装 WP 5.4.1。

我没有使用Microsoft Web Platform Installer,因为它会下载旧版本的 WP/MySQL 和 PHP,所以我正在尝试从头安装。

以下是我采取的步骤:

  • 下载并安装最新PHP 7.4.5,非线程安全版本 并安装它
  • php.ini-production 重命名为php.ini
  • 将 php.ini 编辑为:

    • upload_max_filesize = 64M
    • post_max_size = 64M
    • max_execution_time = 300
    • extesion=mysqli(这里去掉了分号,因为 PHP 需要这个驱动来连接 MySQL8)
  • 在 IIS 中,我创建了 *.php 映射并添加了 default.php 和 index.php

  • 创建虚拟phpinfo.php文件并在IIS上测试,一切正常,phpinfo()显示数据

  • 已下载MySQL 8.0.20 并使用以下选项进行安装:

    • 仅限服务器
    • 独立
    • 服务器计算机
    • 对于身份验证方法,我按照 PHP 安装程序的建议选择“使用 Stron 密码加密”
  • 将 MySQL BIN 文件夹添加到 path 环境变量中

  • 打开 %PROGRAMDATA%\MySQL\MySQL Server 8.0\my.ini 并禁用 sha2 并启用 native_password:

    • ;default_authentication_plugin=caching_sha2_password
    • default_authentication_plugin=mysql_native_password
  • 为 WP 创建了一个新数据库,名为 wp1(在 MySQL 8 中,同时创建用户和授予访问权限的“单行”不起作用,因此我们需要在2 行)

  mysql -u root -p
  create database wp1;
  CREATE USER ‘wp1’@’%’ IDENTIFIED BY ‘password’;
  GRANT ALL PRIVILEGES ON wp1.* TO ‘wp1’@’%’;
  FLUSH PRIVILEGES;
  EXIT
  • 创建文件夹 C:\intepub\wwroot\wp1 并授予对 IUSRUsers windows 组的完全访问权限,以便 WP 可以编写配置文件

  • 在 IIS 中,右键单击 Default Web Site,然后单击指向新的 wp1 文件夹的 Add Application

  • 导航到localhost/wp1 开始安装WP

所以在选择语言并输入数据库信息后,我得到了这个错误

WordPress database error Unknown column ‘wp_’ in ‘field list’ for query SELECT wp_

经过几个小时的努力,我发现了:

  • 错误来自 DB,而不是 WP。
  • 在安装过程中尝试了wp1root 用户
  • 在安装过程中尝试使用localhost127.0.0.1
  • 在 setup-config.php 文件第 315 行 $wpdb->query("SELECT $prefix") 中生成错误
  • 似乎问题在于到达 MySQL 的是字符串 select wp_ insted of select 'wp_'(注意缺少的引号)
  • 如果我转到 MySQL 并执行 select wp_ 我得到完全相同的错误

所以这个问题似乎与 MySQL 8.0 如何处理它从 WP 安装程序接收的查询中的引号有关......

我在安装 MySQL 8.0.20 之前恢复了一个快照,这一次,而不是 Use Strong Password Encryption for Authentication 我选择了 Use Legacy Authentication Method (Retain MySQL 5.x Compatibility) 但报错还是一样

在回答之前,请考虑:

  • 我正在寻求解决问题,而不是开始讨论我应该使用 MySQL 5.x 而不是 MySQL 8.x
  • 是的,数据库连接正常,不是问题,请阅读我的所有帖子
  • 是的,正在使用正确的值写入 wp-config

即使很艰难,我在 WP 论坛上也看到了许多带有相同错误的消息,它们通常没有答案,或者答案没有任何意义(比如要求 OP 检查数据库凭据并写入对 WP 文件夹的访问权限),still I posted on the WP forum,但我还没有回答。

抱歉我的格式不好!

有人可以帮忙吗?

【问题讨论】:

  • 奇怪的是,我认为它正在做它应该做的事情。有问题的代码是$errors = $wpdb->hide_errors(); $wpdb->query( "SELECT $prefix" ); $wpdb->show_errors( $errors ); if ( ! $wpdb->last_error ) { ( // MySQL was able to parse the prefix as a value, which we don't want. Bail.) wp_die( __( '<strong>Error</strong>: "Table Prefix" is invalid.' ) ); } 所以该行应该是失败的,但它应该继续
  • @aynber 我也没有收到 table prefix is invalid 文本,但如果我输入了无效前缀,我会收到 table prefix is invalid 消息。所以你是对的,不知何故 WP 在 MySQL 内部出现错误后停止了脚本执行
  • @anyber 是否有某种 halt on errorstop on error 需要在 PHP 或 MySQL 中配置而我错过了这一步?
  • 您可能需要检查 php.ini 中的 PHP 错误设置。我现在不能告诉你它应该是什么。 hide_errors()/show_errors() 应该抑制该特定错误,因此可能出于某种原因hide_errors 未将 show_errors 设置为 false。 (在 wp-includes/wp-db.php 中查找确切的代码)
  • @aynber php.ini 有display_errors = Off

标签: php mysql wordpress


【解决方案1】:

终于找到问题了……

TLDR; 编辑您的 php.ini 并确保您拥有两者:

display_errors = On

error_log = php_errors.log

设置 error_log 解决了问题...我猜当 error_log 没有值(默认配置)时,PHP 决定将错误发送回调用程序,导致在 WP 安装过程中出现错误消息column 'wp_' in 'field list'

More details here

【讨论】:

    【解决方案2】:

    我刚刚删除了wp-admin\setup-config.php 中的第 317 到 322 行,重新运行了设置,一切正常。

    可能不是正确的解决方案,但唯一对我有用。

    这是 WP 5.5.3,以前的版本我没有下载和安装问题

    【讨论】:

      【解决方案3】:

      我刚刚删除了 wp-admin\setup-config.php 中的第 317 到 322 行,重新运行了设置,一切正常。

      可能不是正确的解决方案,但唯一对我有用。

      这是针对 WP 5.5.3 的,以前的版本我下载和安装都没有问题

      我在 5.6.2 版上尝试使用相同的数据库安装第二个站点时也是如此,因此需要新的表前缀

      【讨论】:

      • 你好:),这个答案已经回答了。如果您对原始答案没有任何补充,请考虑将其删除。
      【解决方案4】:

      以上解决方案均不适用于我的情况。因为我已经在我的 windows 机器上安装了 Mysql 工作台。我停止了已经运行的 mysql 服务器,我按照下面提到的步骤操作。

      打开命令提示符,然后导航到以下路径

      C:\Program Files\MySQL\MySQL Server 8.0\  
      

      然后运行以下命令

      mysqladmin -u root -p shutdown
      

      之后我在 xampp 服务器上重新启动了 apache 和 mysql,它工作正常。

      【讨论】:

        【解决方案5】:

        我找到了解决方案,对我来说问题出在 php 文件夹(确切地说是“php.ini”文件),所以为了获得标准设置,我刚刚在 VMWare 中安装了 windows server 2019,然后安装了“ php 7.4" 使用 web 平台,然后我将 PHP 文件夹从 VMWare "C:\Program Files (x86)\PHP\v7.4" 复制到我的 PC (windows10),然后我下载 "wordpress5.8.2" 和 "mysql8" .0.1”,在安装 mysql 并为 wordpress 创建数据库(只需创建数据库)并在我的 windows10 中设置 IIS 后,我运行 localhost 并且一切正常,wordpress 安装没有任何错误。

        所以尝试获取与 web 平台一起安装的 php.ini 并将其覆盖在您的 php 文件夹上并运行,如果它不起作用尝试复制整个 php 文件夹并重试,我用 php 8.0 尝试过这个但有很多错误。

        【讨论】:

          【解决方案6】:

          如果 WordPress 版本不支持服务器的 PHP 版本,则可能出现此错误。

          就我而言,我最近使用 PHP 8.1.1 安装了最新的 XAMPP,并且必须将 PHP 降级到 8.0.14 才能安装 WordPress 5.8.2/5.8.3 并正常工作。

          【讨论】:

            猜你喜欢
            • 2022-01-02
            • 1970-01-01
            • 1970-01-01
            • 2021-04-02
            • 1970-01-01
            • 2019-11-26
            • 2020-08-19
            • 2010-11-23
            相关资源
            最近更新 更多