Ich habe eine Google App Engine Standard Env-Instanz. Meine Anwendung, die Google Cloud SQL verbindet hat folgende Fehler -Primärschlüsselverletzung, wenn absolut keine Daten in der Tabelle vorhanden sind
Duplicate entry '1' for key 'PRIMARY' Query: INSERT INTO user_profiles
(uid, name, profile_image_url, favourite_team_id, provider, admin)
VALUES (?, ?, ?, ?, ?, ?) on duplicate key update name = ?,
profile_image_url = ?, favourite_team_id = ?, provider = ?, admin = ?
Was wirklich seltsam ist, dass die USER_PROFILES Tabelle leer ist!
select count(*) from eplreflex.user_profiles
count(*)
0
Sieht aus wie wenn ich das Schema gelöscht und neu erstellt, die MySQL-Instanz noch irgendwie alte Daten enthält. Was genau ist los? Wie lösche ich alles einschließlich der alten Daten? Hier
ist die Tabellendefinition btw
CREATE TABLE `eplreflex`.`user_profiles` (
`id` INT NOT NULL AUTO_INCREMENT,
`uid` VARCHAR(200) NOT NULL,
`name` VARCHAR(200) NOT NULL,
`profile_image_url` VARCHAR(400) NOT NULL,
`favourite_team_id` INT NULL,
`provider` VARCHAR(100) NULL,
`email` VARCHAR(100) NULL,
`purchased_coins` double not null default 0,
`free_coins` double not null default 0,
`coins_won` double not null default 0,
`coins_lost` double not null default 0,
`admin` bool not null default 0,
`insert_ts` timestamp default current_timestamp,
`update_ts` timestamp default current_timestamp on update current_timestamp,
`ads_enabled` bool not null default 1,
PRIMARY KEY (`id`),
UNIQUE KEY (`uid`),
INDEX (`favourite_team_id` ASC),
INDEX (`coins_won` ASC),
CONSTRAINT
FOREIGN KEY (`favourite_team_id`)
REFERENCES `eplreflex`.`teams` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT);
aktualisieren
So mache ich eine count (*) aus der Tabelle und es gibt 0 zurück
ich versuchen, die Tabelle Kürzen und es gibt mir
Fehlercode: 1701. Kann eine Tabelle, die in einer Fremdschlüsseleinschränkung () referenziert wird, nicht abschneiden. leaderboard_users
, CONSTRAINT leaderboard_users_ibfk_1
FREMDSCHLÜSSEL (user_id
) REFERENZEN eplreflex
. user_profiles
(id
))
Ich wählen count (*) von Leaderboard_users und das gibt auch Null zurück !!
Etwas ist ernsthaft mit Google Cloud Sql vermasselt.
Es ist völlig zu erwarten, dass Sie eine verknüpfte Tabelle nicht abschneiden können - das ist normal, auch bei leeren Tabellen. Konnten Sie den Zähler auto_increment zurücksetzen? –
Autoinkrement-Zähler wird jedes Mal zurückgesetzt, wenn ich das Schema lösche und das gesamte Schema erneut erstelle! Wir haben uns entschieden, Cloud Sql nicht zu verwenden und haben eine eigene Mysql-Datenbank. Dies sieht für eine Produktionsumgebung nicht sehr stabil aus. –