我的插件中的这一行:
$wpdb->query("ALTER TABLE {$wpdb->prefix}postmeta ADD CONSTRAINT postmeta UNIQUE (post_id,meta_key(100))");
显示以下错误:
[Duplicate entry \'539-_wp_attachment_image_alt\' for key \'postmeta\']
我在数据库中查找该条目,发现有几个条目
post_id
is 539和
meta_key
是
_wp_attachment_image_alt
, 以及其他几个具有副本的
post_id
s和图像高度。
我的问题是:是否重复_wp_attachment_image_alt
WordPress中允许使用元键?我正在试图了解这个特定站点上是否存在复制条目的错误,或者这是否是正常行为。
我知道复制的meta_密钥通常可以插入postmeta
我还觉得我不应该添加和依赖post\\u id+meta\\u key唯一键,因为WordPress中允许重复的meta\\u键,对吗?
最合适的回答,由SO网友:Tom J Nowell 整理而成
Meta keys are not unique, 根据设计,一篇文章可以有多个具有相同密钥的meta。此外,您不应该在插件中修改WP核心表,这是一种不好的做法,可能会导致WP更新时的数据丢失。
特别是,各种元API有第三个参数:
get_post_meta( int $post_id, string $key = \'\', bool $single = false )
如果
$single
设置为
false
然后返回所有键/值对的数组。这样,您就可以存储多个值,而无需求助于序列化数组。这也是为什么
update_post_meta
和
add_post_meta
功能。
术语/评论/用户/站点元等也是如此