diff --git a/internal/rond/export.go b/internal/rond/export.go index da5de33..73dcaa1 100644 --- a/internal/rond/export.go +++ b/internal/rond/export.go @@ -256,15 +256,11 @@ func patchSQLite(ctx context.Context, db *sql.DB, datasetID int64, sqlitePath st if p.Lat.Valid && p.Lon.Valid && !known["ZLOCATION"][p.SrcPK] { rawLat, rawLon = geo.GCJ02ToWGS84(p.Lat.Float64, p.Lon.Float64) } - // 国家码:真机这列从来不写 NULL(未知时写空串,实测 09-28 那份有 19 行是 ''), - // 而站点新建的地点没有这一项、导入时 '' 也被折叠成了 NULL —— 写回时按真机的形状补空串, - // 别把 NULL 塞回去(那又是它没见过的形状)。 - country := ns(p.Country) - if country == nil { - country = "" - } + // 国家码写成 NULL,**不要**补空串:2026-09-29 实测——只把这一列从 NULL 改成 '' + // 就让真机从「能导入」变成「备份恢复失败」(同一份包、同一台设备,唯一差异就是这列)。 + // 站点新建的地点这一项本来就是 NULL,保持原样最安全。 if err := loc.write(p.SrcPK, []any{ns(p.Name), ns(p.Category), nf(p.Lat), nf(p.Lon), - country, ns(p.Province), ns(p.City), ns(p.Sublocality), ns(p.Thoroughfare), ns(p.Timezone), + ns(p.Country), ns(p.Province), ns(p.City), ns(p.Sublocality), ns(p.Thoroughfare), ns(p.Timezone), lastArrival, rawLat, rawLon}, raw); err != nil { return fmt.Errorf("写入地点失败: %w", err)