Korjaa sites→laitetilat migraatio: tyhjennä sites-taulu kopioinnin jälkeen
Ongelma: migraatio ajautui joka API-kutsulla ja kopioi sites-taulun rivit takaisin laitetilat-tauluun, joten poistettua laitetilaa ei voinut oikeasti poistaa — se ilmestyi aina takaisin. Korjaus: DELETE FROM sites migraation jälkeen, ja tarkista ensin onko sites-taulussa rivejä (vältetään turha ajaminen). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
23
db.php
23
db.php
@@ -642,16 +642,19 @@ function initDatabase(): void {
|
|||||||
|
|
||||||
// Migraatio: yhdistä sites → laitetilat (kopioi vanhat sijainnit laitetiloiksi)
|
// Migraatio: yhdistä sites → laitetilat (kopioi vanhat sijainnit laitetiloiksi)
|
||||||
try {
|
try {
|
||||||
// Kopioi sites-taulun rivit laitetilat-tauluun (ohita duplikaatit)
|
$sitesExist = $db->query("SELECT COUNT(*) AS cnt FROM sites")->fetch_assoc();
|
||||||
$db->query("
|
if ((int)($sitesExist['cnt'] ?? 0) > 0) {
|
||||||
INSERT IGNORE INTO laitetilat (id, company_id, nimi, kuvaus, osoite, luotu, muokattu, muokkaaja)
|
// Kopioi sites-taulun rivit laitetilat-tauluun (ohita duplikaatit)
|
||||||
SELECT id, company_id, nimi, '', CONCAT(IFNULL(osoite,''), IF(kaupunki != '', CONCAT(', ', kaupunki), '')), NOW(), NOW(), ''
|
$db->query("
|
||||||
FROM sites
|
INSERT IGNORE INTO laitetilat (id, company_id, nimi, kuvaus, osoite, luotu, muokattu, muokkaaja)
|
||||||
");
|
SELECT id, company_id, nimi, '', CONCAT(IFNULL(osoite,''), IF(kaupunki != '', CONCAT(', ', kaupunki), '')), NOW(), NOW(), ''
|
||||||
// Päivitä laitteiden laitetila_id vanhoista site_id-viittauksista
|
FROM sites
|
||||||
$db->query("UPDATE devices SET laitetila_id = site_id WHERE laitetila_id IS NULL AND site_id IS NOT NULL");
|
");
|
||||||
// Päivitä IPAM-merkintöjen site_id viittaamaan laitetiloihin (jo sama ID)
|
// Päivitä laitteiden laitetila_id vanhoista site_id-viittauksista
|
||||||
// (ei tarvitse muuttaa koska ID:t ovat samat)
|
$db->query("UPDATE devices SET laitetila_id = site_id WHERE laitetila_id IS NULL AND site_id IS NOT NULL");
|
||||||
|
// Tyhjennä sites-taulu ettei migraatio toista itseään
|
||||||
|
$db->query("DELETE FROM sites");
|
||||||
|
}
|
||||||
} catch (\Throwable $e) { /* ohitetaan */ }
|
} catch (\Throwable $e) { /* ohitetaan */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user