复制数据库后无法在管理员中添加用户

时间:2019-03-04 作者:BlueDogRanch

这是一个非常奇怪的问题。我正在测试一个大型生产Woocommerce网站,它有一个2 gig的数据库。生产站点需要更新Woocommerce和插件,所以我想测试登台。我可以在生产网站上添加用户,Woocommerce订阅也可以工作。

我使用mysqldump将数据库复制到测试子域,并使用wp cli更改数据库中的所有URL。临时站点上的一切都正常工作—沙盒签出当前用户,等等—除了通过admin中的New User添加用户。这也意味着Woocommerce订阅不起作用,因为该过程将用户添加为签出的一部分。(是的,Woocommerce订阅已正确启用为测试转移的沙盒。)

当我尝试在admin中添加一个新用户时,页面会加载几秒钟,我会看到绿色标记的WP警报,表明该用户已被添加。但是当我在admin和PHPMyAdmin中搜索用户时,用户还没有被添加。站点管理员收到一封已添加用户的电子邮件,但用户名和电子邮件为空。

调试中没有错误,使用查询监视器时没有错误,通用服务器php错误日志或MySQL或慢速查询日志中没有错误。

在登台时,我尝试手动替换所有WP核心文件/文件夹,停用所有插件并使用2019主题。

我在PHP7.2中提出了max\\u input\\u vars和post\\u max\\u size。

服务器是Maria 10.2。我修复了所有数据库表。

我可以直接在PHPMyAdmin中使用查询添加用户。

尝试使用wp cli添加用户wp user create username [email protected] --role=subscriber导致“错误:创建新用户时出现未知错误”

当我在登台时创建一个新的数据库,并将WP安装为一个“新”站点,其中包含相同的WP文件/文件夹和插件时,我可以在admin中添加新用户。但一旦我返回到从生产环境复制的工作数据库,我就无法添加用户。

1 个回复
最合适的回答,由SO网友:BlueDogRanch 整理而成

关键是wp_users 表丢失了其AUTO_INCREMENT 由于未知原因,在导入时进行设置;服务器可能已超时等。

我从调试日志中的wp cli错误中发现了这一点"WordPress database error Duplicate entry \'1000075\' for key \'PRIMARY\' for query INSERT INTO \'wp_users\'在PHPMyAdmin中,我可以看到ID1000075 已分配给用户。

即使wp_users 显示的表格AUTO_INCREMENT在PHPMyAdmin中设置,我运行此查询以进行设置:

ALTER TABLE pw_users AUTO_INCREMENT = last-ID-plus-1

哪里last-ID-plus-1 是中存在的最高IDwp_users, 加1,即我的情况是

ALTER TABLE pw_users AUTO_INCREMENT = 1003000

设置后AUTO_INCREMENT, 我可以添加用户。

参考:@N00b的答案Wordpress Database lost auto increment