Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用WordPress wp_posts表添加外键_Php_Mysql_Wordpress_Foreign Keys - Fatal编程技术网

Php 无法使用WordPress wp_posts表添加外键

Php 无法使用WordPress wp_posts表添加外键,php,mysql,wordpress,foreign-keys,Php,Mysql,Wordpress,Foreign Keys,我正在尝试添加一个与{wp_posts}表有关系的新表,该代码在localhost中正常工作,它通过了所有测试,但在服务器数据库上失败,并生成[无法添加外键约束 [post_id]字段与{wp_posts->id}字段完全相同。。我不知道我错过了什么 global $wpdb; $charset_collate = $wpdb->collate; $tbl_my_users = $wpdb->prefix . '_TABLE_NAME'; dbDelta( "CREATE TAB

我正在尝试添加一个与{wp_posts}表有关系的新表,该代码在localhost中正常工作,它通过了所有测试,但在服务器数据库上失败,并生成[无法添加外键约束

[post_id]字段与{wp_posts->id}字段完全相同。。我不知道我错过了什么

global $wpdb;
$charset_collate = $wpdb->collate;

$tbl_my_users = $wpdb->prefix . '_TABLE_NAME';

dbDelta( "CREATE TABLE IF NOT EXISTS {$tbl_my_users} (
            user_id BIGINT(20) UNSIGNED NOT NULL,
            post_id BIGINT(20) UNSIGNED NOT NULL,
            name VARCHAR(150) NOT NULL,
            email TINYTEXT NULL,
            INDEX (name),
            PRIMARY KEY  (user_id),
            CONSTRAINT Constr_Unique_UserID UNIQUE( user_id ),
            CONSTRAINT Constr_Unique_PostID UNIQUE( post_id ),
            CONSTRAINT Constr_Unique_User UNIQUE( name ),
            CONSTRAINT Constr_My_Users 
                FOREIGN KEY FK_My_Users (post_id) REFERENCES {$wpdb->posts} (ID) ON DELETE CASCADE ON UPDATE CASCADE
        ) COLLATE {$charset_collate}" );

试试这个bewlo查询

  global $wpdb;
$charset_collate = $wpdb->collate;

$tbl_my_users = $wpdb->prefix . '_TABLE_NAME';

dbDelta("CREATE TABLE IF NOT EXISTS  ".$tbl_my_users."  (
            user_id BIGINT(20) UNSIGNED NOT NULL,
            post_id BIGINT(20) UNSIGNED NOT NULL,
            name VARCHAR(150) NOT NULL,
            email TINYTEXT NULL,
            INDEX (name),
            PRIMARY KEY  (user_id),
            CONSTRAINT Constr_Unique_UserID UNIQUE( user_id ),
            CONSTRAINT Constr_Unique_PostID UNIQUE( post_id ),
            CONSTRAINT Constr_Unique_User UNIQUE( name ),
            CONSTRAINT Constr_My_Users 
                FOREIGN KEY (`post_id`) REFERENCES ".$wpdb->prefix."posts (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
        ) COLLATE SET utf8 COLLATE utf8_general_ci" );

老问题,但我现在面临这个问题

问题是当我们想要设置关系时,我们需要匹配列类型、排序规则和引擎

wp_posts ID:
bigint(20)UNSIGNED

您的表post_id:
bigint(20)UNSIGNED

这是匹配项,但您的
引擎有问题

示例:旧表写为
innodb
,但MYSQL默认引擎设置为
MYISAM
。因此,如果不定义引擎类型,您将创建不支持关系/外键的
MYISAM
表。注意:旧的mysql版本使用
MYISAM
作为默认引擎,而不是
InnoDB

在我的问题中:

wp_posts ID:bigint(20)UNSIGNED InnoDB

我的表post_id:bigint(20)InnoDB

引擎和型号是匹配的,但我得到了eror。因为我忘了设置属性
未签名
。当我设置相同的属性时,所有属性都可以完美地工作

注意:当使用诸如
varchar、char
等字符串类型时,不要忘记排序规则


我希望这会对其他人有所帮助。

至少写下你为什么要投票来理解。。你真的很无助。我没有问一个难的问题,也没有在这个网站上得到答案。你只需要简单的问题。。对??谢谢你的帮助,但我解决了问题,但我无法解决它,我发现我应该在创建新表时编写引擎,但它应该等于wp_posts表的引擎。所以现在我需要写[ENGINE=旧表引擎]。。我不知道为什么它没有写入引擎关键字就失败了?