通过SQL更新liferay页面的友好名称

通过SQL更新liferay页面的友好名称,sql,liferay,liferay-6,Sql,Liferay,Liferay 6,有没有办法通过SQL脚本更新Liferay站点页面的友好名称 我们通常通过管理员用户在控制面板中执行此操作 友好URL存储在Liferay数据库中的LayoutFriendlyURL.friendlyURL中,因此以下查询应该可以工作 UPDATE "yourdatabase"."LayoutFriendlyURL" SET "friendlyURL"="/newurl" WHERE "layoutFriendlyURLId"=12345; 您还需要相应地更新布局表以匹配新的友好url。友好u

有没有办法通过SQL脚本更新Liferay站点页面的友好名称


我们通常通过管理员用户在控制面板中执行此操作

友好URL存储在Liferay数据库中的LayoutFriendlyURL.friendlyURL中,因此以下查询应该可以工作

UPDATE "yourdatabase"."LayoutFriendlyURL" SET "friendlyURL"="/newurl" WHERE "layoutFriendlyURLId"=12345;

您还需要相应地更新布局表以匹配新的友好url。

友好url存储在Liferay数据库中的LayoutFriendlyURL.friendlyURL中,因此以下查询应该可以工作

UPDATE "yourdatabase"."LayoutFriendlyURL" SET "friendlyURL"="/newurl" WHERE "layoutFriendlyURLId"=12345;

您还需要相应地更新布局表,以匹配新的友好url。

虽然@steven35的答案可能可以完成这项工作,但您却惹恼了我。在另一个层面上,如果您在控制面板上或通过API进行操作,那么您的操作是正确的,您不应该考虑任何写入Liferay数据库的方法。它可能暂时起作用,但也可能以不可预见的方式失败——有时是在更新之后很久

已经有足够的样本来证明这一点。如果在Liferay运行时更改数据,缓存将不会更新。如果这些值也在搜索索引中被索引,它们将不会在那里更新,并且如果不重新索引所有内容,以后的随机使用可能找不到正确的页面。相同的值可能存储在其他地方,也可能被转换。很多情况下都会失败——总有一种情况超出了你的预期和适应范围。那一种情况可能会使你的脖子折断

诚然,页面的友好名称可能不属于这些情况中最复杂的一种,但不要养成向Liferay的数据库写入内容的习惯。或者,如果您这样做了,不要抱怨未来的升级失败或需要额外的工作,因为数据库包含API没有预料到的值。问题是,在下一次升级期间(如果您在一年内完成),您很快就会忘记您手动更改了数据库中的数据,并将升级期间出现的问题归咎于Liferay


更改数据正是UI和API的作用。

虽然@steven35的答案可能会起到作用,但你却让我很恼火。在另一个层面上,如果您在控制面板上或通过API进行操作,那么您的操作是正确的,您不应该考虑任何写入Liferay数据库的方法。它可能暂时起作用,但也可能以不可预见的方式失败——有时是在更新之后很久

已经有足够的样本来证明这一点。如果在Liferay运行时更改数据,缓存将不会更新。如果这些值也在搜索索引中被索引,它们将不会在那里更新,并且如果不重新索引所有内容,以后的随机使用可能找不到正确的页面。相同的值可能存储在其他地方,也可能被转换。很多情况下都会失败——总有一种情况超出了你的预期和适应范围。那一种情况可能会使你的脖子折断

诚然,页面的友好名称可能不属于这些情况中最复杂的一种,但不要养成向Liferay的数据库写入内容的习惯。或者,如果您这样做了,不要抱怨未来的升级失败或需要额外的工作,因为数据库包含API没有预料到的值。问题是,在下一次升级期间(如果您在一年内完成),您很快就会忘记您手动更改了数据库中的数据,并将升级期间出现的问题归咎于Liferay


更改数据正是UI和API的作用。

单引号对于SQL标识符无效。你需要用双引号,我知道。您也可以使用`但它是SO编辑器中的一个特殊字符,因此我改为使用它。您可以在格式化代码块中使用可怕的反勾号。但是反勾号在(标准)SQL中也是无效的。Liferay中的表名无论如何都不需要引用。所以你既不需要反勾号也不需要双引号。在SQL中,字符串常量确实需要用单引号括起来
“/newurl”
是(标准)SQLI中的一个列引用,它从mysql workbench复制并粘贴了这篇文章,它引用了所有内容,所以我想把它们保留在引号中。你怎么知道Veeru在使用mysql?(与SQL标准无关)单引号对于SQL标识符无效。你需要用双引号,我知道。您也可以使用`但它是SO编辑器中的一个特殊字符,因此我改为使用它。您可以在格式化代码块中使用可怕的反勾号。但是反勾号在(标准)SQL中也是无效的。Liferay中的表名无论如何都不需要引用。所以你既不需要反勾号也不需要双引号。在SQL中,字符串常量确实需要用单引号括起来
“/newurl”
是(标准)SQLI中的一个列引用,它从mysql workbench复制并粘贴了这篇文章,它引用了所有内容,所以我想把它们保留在引号中。你怎么知道Veeru在使用mysql?(不关心SQL标准)