我有一個Google App Engine標準Env實例。我連接到Google Cloud SQL的應用程序有以下錯誤 -表中絕對沒有數據時的主鍵違規
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 = ?
真奇怪的是user_profiles表是空的!
select count(*) from eplreflex.user_profiles
count(*)
0
看起來像當我刪除並重新創建架構時,mysql實例仍舊以某種方式具有舊數據。究竟發生了什麼?如何刪除包括舊數據在內的所有內容?
下面是表定義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);
更新
因此,我從表中的COUNT(*),並返回0
我嘗試截斷表,並給我
錯誤代碼:1701.不能截斷在外鍵約束中引用的表(eplreflex
。 leaderboard_users
,CONSTRAINT leaderboard_users_ibfk_1
FOREIGN KEY(user_id
)參考文獻eplreflex
。 user_profiles
(id
))
我選擇從leaderboard_users計數(*),也返回零!
某些事情與Google Cloud Sql嚴重混淆。
它完全預計你不能截斷鏈表 - 這是正常的,即使是空表。 你能重置auto_increment計數器嗎? –
每次我放棄架構並重新創建整個架構時,自動遞增計數器都會重置!我們決定不使用Cloud Sql並擁有自己的Mysql數據庫。對於生產環境來說這看起來不太穩定。 –