这是一个非常奇怪的问题。我正在测试一个大型生产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中添加新用户。但一旦我返回到从生产环境复制的工作数据库,我就无法添加用户。
最合适的回答,由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
是中存在的最高ID
wp_users
, 加1,即我的情况是
ALTER TABLE pw_users AUTO_INCREMENT = 1003000
设置后
AUTO_INCREMENT
, 我可以添加用户。
参考:@N00b的答案Wordpress Database lost auto increment