WPDB создает уникальный внешний ключ таблицы - PullRequest
0 голосов
/ 20 июня 2020

Я использую этот код для создания таблицы:

$playlist_table = $wpdb->prefix . "vpl_playlists";

        $sql = "CREATE TABLE $playlist_table (
            `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
            `title` varchar(100) NOT NULL,
            `options` text DEFAULT NULL,
            PRIMARY KEY (`id`)
        ) $charset_collate;";
        dbDelta( $sql );



$media_table = $wpdb->prefix . "vpl_media";
sql = "CREATE TABLE $media_table (
            `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
            `options` longtext DEFAULT NULL,
            `order_id` int(11) unsigned DEFAULT NULL,
            `playlist_id` int(11) unsigned NOT NULL,
            PRIMARY KEY (`id`),
            INDEX `playlist_id` (`playlist_id`),
            CONSTRAINT `vpl_media_ibfk_1` FOREIGN KEY (`playlist_id`) REFERENCES {$playlist_table} (`id`) ON DELETE CASCADE ON UPDATE CASCADE
        ) $charset_collate;";
        dbDelta( $sql );

Это работает само по себе, но если я попытаюсь сделать это на мультисайте, я получаю сообщение об ошибке:

Can't write; duplicate key in table ... for query CREATE TABLE

Это сработает, если я удалю эту строку:

CONSTRAINT `vpl_media_ibfk_1` FOREIGN KEY (`playlist_id`) REFERENCES {$playlist_table} (`id`) ON DELETE CASCADE ON UPDATE CASCADE

Как мне написать эту строку, чтобы у меня не было этой ошибки дублирования ключа?

...