Never mind - recovered an older database and then recreated the tables that way. Had to delete end_date and public_poll to get it to work properly though.
In case anyone needs this, here's the SQL I used
CREATE TABLE `polls` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`question` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`discussion_id` int(11) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`user_id` int(11) NOT NULL,
`end_date` datetime DEFAULT NULL,
`public_poll` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `poll_options` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`answer` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`poll_id` int(10) unsigned NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `poll_options_poll_id_foreign` (`poll_id`),
CONSTRAINT `poll_options_poll_id_foreign` FOREIGN KEY (`poll_id`) REFERENCES `polls` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `poll_votes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`option_id` int(10) unsigned NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`poll_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `poll_votes_option_id_foreign` (`option_id`),
KEY `poll_votes_user_id_foreign` (`user_id`),
CONSTRAINT `poll_votes_option_id_foreign` FOREIGN KEY (`option_id`) REFERENCES `poll_options` (`id`),
CONSTRAINT `poll_votes_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;