Не удалось обновить PHP MySQLi - PullRequest
0 голосов
/ 03 января 2019

Я обновляю существующую базу данных, используя следующий код.

  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;
        }
    }
}

1 Ответ

0 голосов
/ 04 января 2019

Для разрешения я добавил обновление после цикла запроса.

if($installed && $version > $installed){
    $conn->query("UPDATE `settings_".$faucet_id."` SET `value` = '".$version."' WHERE `settings_".$faucet_id."`.`name` = 'version'");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...