当我通过ID检查我的用户列表时,我得到如下的ID:
我希望它们是从1到N的连续数字。
我有什么问题?我怎么才能修好它?
发布于 2014-12-25 08:27:21
虽然不建议更新用户id,但出于参数的考虑,您可以重置数据库中的用户id列。
。
例如,users_roles, file_managed, node, node_revision和其他表..。
为了使用户与新的uid匹配,您可以先将用户id导出到电子邮件地址。然后,您可以稍后进行另一个导出并交叉引用来自邮件地址的uid,以检查新的用户id匹配。请记住,默认情况下,drupal中的电子邮件地址并不是唯一的。
SELECT uid, mail FROM users;首先备份users表。
然后你可以做一些可怕的事情,比如:
ALTER TABLE users DROP COLUMN uid;
ALTER TABLE users ADD uid INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;这将删除并重新生成用户uid列。
更新:正如Berdir澄清的那样,奇怪的是,默认情况下,用户id字段不是Drupal 7中的自动递增字段。因此,您可能需要在重新创建UID序列并使用以下方法将其转换为普通int之后,删除自动增量属性:
ALTER TABLE users MODIFY uid int(10) unsigned;注意:您需要使用以下方法重新生成匿名用户帐户:
INSERT INTO users (name, pass, mail, theme, signature, language, init, timezone) values ('', '', '', '', '', '', '', '');
UPDATE users SET uid = 0 WHERE name = '';如果您只想隐藏uid字段值,可以尝试一个用户别名模块,如下所示:
发布于 2014-12-31 10:00:39
Drupal 7和8中的用户ID不是自动增量,而是基于db_next_id()。这意味着它与例如批处理ID共享,这也是它不像节点ID那样计数的原因。
更改这一点几乎是不可能的,您不仅需要手动更新用户、users_roles、所有用户字段表、所有对用户的引用(如节点和注释作者、实体引用字段等),而且还必须重置db_next_id()的全局序列表,如果它们一直使用db_next_id()并依赖于它,则可能会中断Drupal中的其他位置。
所以不你不能。
发布于 2014-12-25 07:58:50
不,你不能,或者不应该。用户id是数据库中用户表的自动增量值。关于用户的每一个信息(节点、字段值和任何其他东西)都与UID相关。
https://drupal.stackexchange.com/questions/141669
复制相似问题