Я обновляю существующую базу данных, используя следующий код.
ALTER IGNORE TABLE `payouts` ENGINE = InnoDB;
ALTER IGNORE TABLE `users_UNIQUE` ENGINE = InnoDB;
DROP INDEX IF EXISTS `userhash` ON `payouts`;
DROP INDEX IF EXISTS `address` ON `payouts`;
DROP INDEX IF EXISTS `ip` ON `payouts`;
DROP INDEX IF EXISTS `slid` ON `payouts`;
ALTER TABLE `payouts` ADD KEY `userhash` (`userhash`),ADD KEY `address` (`address`),ADD KEY `ip` (`ip`),ADD KEY `slid` (`slid`);
DROP INDEX IF EXISTS `userhash` ON `users_UNIQUE`;
DROP INDEX IF EXISTS `address` ON `users_UNIQUE`;
ALTER TABLE `users_UNIQUE` ADD KEY `userhash` (`userhash`),ADD KEY `address` (`address`);
UPDATE `settings_UNIQUE` SET `value` = '58.3' WHERE `settings_UNIQUE`.`name` = 'version';
Проблема в том, что последний запрос, который обновляется до текущей версии, не обновляется.
Я не получаю никаких сообщений об ошибках, он просто не обновляется.
Если я запускаю это непосредственно в базе данных через SQL, он обновляется, но не через PHP.
PHP я использую.
$db_update = array(
'58.3' => array(
"ALTER IGNORE TABLE `payouts` ENGINE = InnoDB;",
"ALTER IGNORE TABLE `users_".$faucet_id."` ENGINE = InnoDB;",
"DROP INDEX IF EXISTS `userhash` ON `payouts`;",
"DROP INDEX IF EXISTS `address` ON `payouts`;",
"DROP INDEX IF EXISTS `ip` ON `payouts`;",
"DROP INDEX IF EXISTS `slid` ON `payouts`;",
"ALTER TABLE `payouts` ADD KEY `userhash` (`userhash`),ADD KEY `address` (`address`),ADD KEY `ip` (`ip`),ADD KEY `slid` (`slid`);",
"DROP INDEX IF EXISTS `userhash` ON `users_".$faucet_id."`;",
"DROP INDEX IF EXISTS `address` ON `users_".$faucet_id."`;",
"ALTER TABLE `users_".$faucet_id."` ADD KEY `userhash` (`userhash`),ADD KEY `address` (`address`);",
"UPDATE `settings_".$faucet_id."` SET `value` = '58.3' WHERE `settings_".$faucet_id."`.`name` = 'version';"
)
);
foreach($db_update as $v => $update){
if ($v <= $installed) continue;
foreach($update as $query){
if(!$conn->query($query)){
echo $conn->error;
exit;
}
}
}