From 17496f3edfd208378f781b3d65ec888ff3ca56a8 Mon Sep 17 00:00:00 2001
From: Sean Dague
Date: Fri, 2 May 2008 19:39:27 +0000
Subject: in theory fix the user table mapping
---
OpenSim/Data/NHibernate/NHibernateUserData.cs | 22 ++++++++++++++++++++++
.../NHibernate/Resources/UserAppearance.hbm.xml | 4 ++--
2 files changed, 24 insertions(+), 2 deletions(-)
(limited to 'OpenSim')
diff --git a/OpenSim/Data/NHibernate/NHibernateUserData.cs b/OpenSim/Data/NHibernate/NHibernateUserData.cs
index 87594db..8983753 100644
--- a/OpenSim/Data/NHibernate/NHibernateUserData.cs
+++ b/OpenSim/Data/NHibernate/NHibernateUserData.cs
@@ -29,12 +29,14 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
+using System.Text.RegularExpressions;
using libsecondlife;
using log4net;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Expression;
using NHibernate.Mapping.Attributes;
+using NHibernate.Tool.hbm2ddl;
using OpenSim.Framework;
using Environment=NHibernate.Cfg.Environment;
@@ -78,6 +80,26 @@ namespace OpenSim.Data.NHibernate
// new SchemaExport(cfg).Create(true, true);
factory = cfg.BuildSessionFactory();
+ InitDB();
+ }
+
+ private void InitDB()
+ {
+ string regex = @"no such table: Users";
+ Regex RE = new Regex(regex, RegexOptions.Multiline);
+ try {
+ using(ISession session = factory.OpenSession()) {
+ session.Load(typeof(InventoryItemBase), LLUUID.Zero);
+ }
+ } catch (ObjectNotFoundException e) {
+ // yes, we know it's not there, but that's ok
+ } catch (ADOException e) {
+ Match m = RE.Match(e.ToString());
+ if(m.Success) {
+ // We don't have this table, so create it.
+ new SchemaExport(cfg).Create(true, true);
+ }
+ }
}
private bool ExistsUser(LLUUID uuid)
diff --git a/OpenSim/Data/NHibernate/Resources/UserAppearance.hbm.xml b/OpenSim/Data/NHibernate/Resources/UserAppearance.hbm.xml
index ffb2199..0eabf0e 100644
--- a/OpenSim/Data/NHibernate/Resources/UserAppearance.hbm.xml
+++ b/OpenSim/Data/NHibernate/Resources/UserAppearance.hbm.xml
@@ -30,8 +30,8 @@
-
-
+
+
\ No newline at end of file
--
cgit v1.1