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

时间:2015-01-08 17:06:59

标签: mysql typo3

我正在使用带有许多旧记录的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

是否有任何解决方法只能在一个声明中删除记录?

1 个答案:

答案 0 :(得分:1)

在运行以下某个语句之前,请务必创建 TYPO3数据库的备份

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

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

这会增强您原来的陈述,但是您有些遗漏,所以不要使用它!

上述声明删除了表格pages中没有任何对应所有网页 - 这包括所有网页您的Pagetree的最高级别(其中pid = 0),因此您的pagetree将为空且无法使用

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

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

希望这有帮助。