你是说 Postgres 吗?我不确定这是怎么回事。
我的做法是,如果用户 ID 为 0,则使用用户名作为 ID。然后,如果 find_username_by_import_id 找不到用户,则创建该用户,将电子邮件地址设置为 fake_email(这是 base.rb 中用于生成假电子邮件地址的函数),并将用户名设置为你拥有的用户名。然后,如果你有雄心,可以在脚本末尾暂停所有电子邮件地址中包含 @email.invalid 的用户。他们不会活跃,所以我不认为不暂停他们会有多大影响。
另一种方法是执行一个查询,以某种方式生成一个所有已删除用户的列表,然后在开始处理帖子之前创建它们,但这似乎更难。
如果你想创建一个“已删除用户”用户,并让所有这些帖子都归该用户所有,而不是“system”,你可以这样做,只需将“-1”替换为“已删除用户”的用户编号。你可以将其创建为常规用户,或者做一些花哨的事情,让它的用户 ID 为“-2”或类似的值。
在某些系统中,这是因为附件有时在帖子的正文中,而其他附件记录在数据库中。
你是否在运行导入后安装了 Migrated password hashes support 插件(它在至少某些情况下会干扰运行导入)。SMF2 的密码哈希方式是否与 smf 的方式 相同?