User name "John" is usable, cannot create an anonymous actor for it. Run maintenance/cleanupUsersWithNoId.php to fix this situation.

1 문제상황[ | ]

root@localhost:/var/www/html# php maintenance/update.php 
MediaWiki 1.33.0 Updater

Your composer.lock file is up to date with current dependencies!
Going to run database updates for my_wiki
Depending on the size of your database this may take a while!
Abort with control-c in the next five seconds (skip this countdown with --quick) ...
... (생략)
... rev_id=534620
... rev_id=534720
... rev_id=534778
Completed migration, updated 509013 row(s) with 1532 new actor(s), 4044 error(s)
Beginning migration of archive.ar_user and archive.ar_user_text to archive.ar_actor
... ar_id=100
... ar_id=200
... ar_id=300
... ar_id=400
... ar_id=500
... ar_id=600
... ar_id=720
... ar_id=857
User name "UseModWiki Importer" is usable, cannot create an anonymous actor for it. Run maintenance/cleanupUsersWithNoId.php to fix this situation.

... ar_id=1009
... ar_id=1109
... ar_id=1210
... ar_id=1310
... ar_id=1441
... ar_id=1580
... ar_id=1719
... ar_id=1851
... ar_id=1951
... ar_id=2051
User name "Krinkle" is usable, cannot create an anonymous actor for it. Run maintenance/cleanupUsersWithNoId.php to fix this situation.

... ar_id=2409
User name "MSGJ" is usable, cannot create an anonymous actor for it. Run maintenance/cleanupUsersWithNoId.php to fix this situation.

... ar_id=2555
... ar_id=2697
... ar_id=2856
... ar_id=2978
... ar_id=3081
... ar_id=3186
... ar_id=3296
... ar_id=3439
... ar_id=3571
[8d17137f563bdccd4f30535b] [no req]   Wikimedia\Rdbms\DBQueryError from line 1587 of /var/www/html/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading? 
Query: INSERT  INTO `actor` (actor_name) VALUES ('113.57.92.46'),('93.57.91.35'),('testuser'),('224.68.103.57')
Function: MigrateActors::addActorsForRows
Error: 1062 Duplicate entry 'testuser' for key 'actor_name' (testdb)

Backtrace:
#0 /var/www/html/includes/libs/rdbms/database/Database.php(1556): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string)
#1 /var/www/html/includes/libs/rdbms/database/Database.php(1274): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /var/www/html/includes/libs/rdbms/database/Database.php(2149): Wikimedia\Rdbms\Database->query(string, string)
#3 /var/www/html/maintenance/includes/MigrateActors.php(226): Wikimedia\Rdbms\Database->insert(string, array, string)
#4 /var/www/html/maintenance/includes/MigrateActors.php(306): MigrateActors->addActorsForRows(Wikimedia\Rdbms\DatabaseMysqli, string, array, array, integer)
#5 /var/www/html/maintenance/includes/MigrateActors.php(114): MigrateActors->migrate(string, array, string, string, string)
#6 /var/www/html/maintenance/Maintenance.php(1719): MigrateActors->doDBUpdates()
#7 /var/www/html/includes/installer/DatabaseUpdater.php(1318): LoggedUpdateMaintenance->execute()
#8 /var/www/html/includes/installer/DatabaseUpdater.php(489): DatabaseUpdater->migrateActors()
#9 /var/www/html/includes/installer/DatabaseUpdater.php(453): DatabaseUpdater->runUpdates(array, boolean)
#10 /var/www/html/maintenance/update.php(203): DatabaseUpdater->doUpdates(array)
#11 /var/www/html/maintenance/doMaintenance.php(96): UpdateMediaWiki->execute()
#12 /var/www/html/maintenance/update.php(266): require_once(string)
#13 {main}

2 조치[ | ]

  • archive, revision 테이블에는 있지만 user 테이블에는 없는 user_name가 문제가 된다.
  • 즉, archive 테이블에서 ar_user=0 이지만 ar_user_text가 IP주소가 아닌 경우와, revision 테이블에서 rev_user=0 이지만 rev_user_text가 IP주소가 아닌 경우이다.
  • 과거에는 user를 생성하지 않고 user_id=0인 상태로 user_name만 부여하여 변경하던 일이 있었는데 actor라는 개념으로 통합하면서 실제 사용자가 아닌 user_name이 문제가 된 것이다.
  • 다음 쿼리로 문제가 되는 user_name 목록을 확인할 수 있다.
SELECT DISTINCT rev_user_text FROM revision
WHERE rev_user=0 AND rev_user_text NOT REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$'
MariaDB [my_wiki]> SELECT DISTINCT rev_user_text FROM revision WHERE rev_user=0 AND rev_user_text NOT REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$';
+---------------------+
| rev_user_text       |
+---------------------+
| WOSlinker           |
| MediaWiki default   |
| UseModWiki Importer |
| MSGJ                |
| Krinkle             |
+---------------------+
5 rows in set (0.227 sec)

여러가지 조치방법이 있을 수 있는데, 아래와 같이 처리해보았다.

UPDATE revision SET rev_user_text='1.1.1.1' WHERE rev_user=0 AND rev_user_text='WOSlinker';
UPDATE revision SET rev_user_text='1.1.1.2' WHERE rev_user=0 AND rev_user_text='MediaWiki default';
UPDATE revision SET rev_user_text='1.1.1.3' WHERE rev_user=0 AND rev_user_text='UseModWiki Importer';
UPDATE revision SET rev_user_text='1.1.1.4' WHERE rev_user=0 AND rev_user_text='MSGJ';
UPDATE revision SET rev_user_text='1.1.1.5' WHERE rev_user=0 AND rev_user_text='Krinkle';

UPDATE archive SET ar_user_text='1.1.1.1' WHERE ar_user=0 AND ar_user_text='WOSlinker';
UPDATE archive SET ar_user_text='1.1.1.2' WHERE ar_user=0 AND ar_user_text='MediaWiki default';
UPDATE archive SET ar_user_text='1.1.1.3' WHERE ar_user=0 AND ar_user_text='UseModWiki Importer';
UPDATE archive SET ar_user_text='1.1.1.4' WHERE ar_user=0 AND ar_user_text='MSGJ';
UPDATE archive SET ar_user_text='1.1.1.5' WHERE ar_user=0 AND ar_user_text='Krinkle';

3 확인[ | ]

  • 위의 오류는 해소되었다.
  • 다른 오류가 나기는 하지만, 직접 관련은 없다.
root@localhost:/var/www/html# php maintenance/update.php
... (생략)
... 1617 - 1717
... 1718 - 1818
... 1819 - 1919
... 1920 - 1942
Completed actor creation, added 0 new actor(s)
Beginning migration of revision.rev_user and revision.rev_user_text to revision_actor_temp.revactor_actor
Completed migration, updated 0 row(s) with 0 new actor(s), 0 error(s)
Beginning migration of archive.ar_user and archive.ar_user_text to archive.ar_actor
[e984a6bdf28faebbc720a3f6] [no req]   Wikimedia\Rdbms\DBQueryError from line 1587 of /var/www/html/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading? 
Query: INSERT  INTO `actor` (actor_name) VALUES ('93.57.91.46'),('testuser')
Function: MigrateActors::addActorsForRows
Error: 1062 Duplicate entry 'testuser' for key 'actor_name' (testdb)

Backtrace:
#0 /var/www/html/includes/libs/rdbms/database/Database.php(1556): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string)
#1 /var/www/html/includes/libs/rdbms/database/Database.php(1274): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /var/www/html/includes/libs/rdbms/database/Database.php(2149): Wikimedia\Rdbms\Database->query(string, string)
#3 /var/www/html/maintenance/includes/MigrateActors.php(226): Wikimedia\Rdbms\Database->insert(string, array, string)
#4 /var/www/html/maintenance/includes/MigrateActors.php(306): MigrateActors->addActorsForRows(Wikimedia\Rdbms\DatabaseMysqli, string, array, array, integer)
#5 /var/www/html/maintenance/includes/MigrateActors.php(114): MigrateActors->migrate(string, array, string, string, string)
#6 /var/www/html/maintenance/Maintenance.php(1719): MigrateActors->doDBUpdates()
#7 /var/www/html/includes/installer/DatabaseUpdater.php(1318): LoggedUpdateMaintenance->execute()
#8 /var/www/html/includes/installer/DatabaseUpdater.php(489): DatabaseUpdater->migrateActors()
#9 /var/www/html/includes/installer/DatabaseUpdater.php(453): DatabaseUpdater->runUpdates(array, boolean)
#10 /var/www/html/maintenance/update.php(203): DatabaseUpdater->doUpdates(array)
#11 /var/www/html/maintenance/doMaintenance.php(96): UpdateMediaWiki->execute()
#12 /var/www/html/maintenance/update.php(266): require_once(string)
#13 {main}

4 같이 보기[ | ]

5 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}