diff --git a/OpenSim/Data/SQLite/Resources/EstateStore.migrations b/OpenSim/Data/SQLite/Resources/EstateStore.migrations index 4818f97702..09407a3e73 100644 --- a/OpenSim/Data/SQLite/Resources/EstateStore.migrations +++ b/OpenSim/Data/SQLite/Resources/EstateStore.migrations @@ -22,7 +22,7 @@ CREATE INDEX estate_map_estate_id on estate_map(EstateID); CREATE UNIQUE INDEX estate_map_region_id on estate_map(RegionID); CREATE TABLE IF NOT EXISTS estate_settings ( - EstateID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + EstateID INTEGER NOT NULL PRIMARY KEY, EstateName varchar(64) default NULL, AbuseEmailToEstateOwner tinyint(4) NOT NULL, DenyAnonymous tinyint(4) NOT NULL, diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs index 8491302aa7..d223c0324e 100644 --- a/OpenSim/Data/SQLite/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs @@ -189,15 +189,25 @@ namespace OpenSim.Data.SQLite { List names = new List(FieldList); - // Remove EstateID and use AutoIncrement - if (es.EstateID < 100) - names.Remove("EstateID"); - using (SqliteCommand cmd = m_connection.CreateCommand()) { - string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")"; + if (es.EstateID < 100) + { + cmd.CommandText = "select MAX(EstateID) FROM estate_settings"; + cmd.Parameters.Clear(); + uint a = 0; + object r = cmd.ExecuteScalar(); + if(r!=null && !(r is DBNull)) + { + a = Convert.ToUInt32(r); + } + if (a < 100) + a = 100; + ++a; + es.EstateID = a; + } - cmd.CommandText = sql; + cmd.CommandText = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")"; cmd.Parameters.Clear(); foreach (string name in FieldList) @@ -216,18 +226,6 @@ namespace OpenSim.Data.SQLite } cmd.ExecuteNonQuery(); - - // Only get Auto ID if we actually used it else we just get 0 - if (es.EstateID < 100) - { - cmd.CommandText = "select LAST_INSERT_ROWID() as id"; - cmd.Parameters.Clear(); - using (IDataReader r = cmd.ExecuteReader()) - { - r.Read(); - es.EstateID = Convert.ToUInt32(r["id"]); - } - } } }