TYPO3:删除没有 pid 的页面记录

TYPO3: delete pages records with no pid

我正在使用带有许多旧记录的 TYPO3 4.5。我清除了tt_conten等等。现在我遇到了问题,我必须删除一些没有相应父页面记录的页面记录。

使用 DELETE from pages where pid not in (SELECT uid FROM pages) 我得到一个错误

You can't specify target table 'pages' for update in FROM clause

是否有任何解决方法可以仅在一条语句中删除记录?

确保在 运行 以下语句之一之前创建 TYPO3 数据库的备份

为了删除所有在pages table中没有uid的页面,可以使用下面的语句。

DELETE FROM pages WHERE pid NOT IN (SELECT * FROM (SELECT uid FROM pages) AS X) ;

这增强了您的原始陈述,但是您遗漏了一些东西,所以不要使用它!

上面的语句删除了所有页面,这些页面在table pages - 这包括 pagetree 顶层的所有页面(pid = 0),因此您的 pagetree 将空且无法使用.

要排除顶级页面,请使用以下语句。

DELETE FROM pages WHERE pid NOT IN (SELECT * FROM (SELECT uid FROM pages) AS X) AND pid > 0;

希望这对您有所帮助。