Have you tried verifying that the same problem occurs when specifying the MEDIUMINT type using an automapping override in one particular instance, rather than as a convention across the board?
Without MySql knowledge, I'm afraid I'm going to run out of ideas pretty fast on this one. On Mon, Mar 15, 2010 at 5:18 PM, Isaac Inyang <isaac.iny...@gmail.com>wrote: > Without the convention, everything runs well. > > With the convention enabled, I *suspect* there is a type mismatch between > the database columns i.e. MEDIUMINT in table 1 and INT In table 2. > > Thank you. > > Isaac > > > > > On Mon, Mar 15, 2010 at 3:48 AM, Paul Batum <paul.ba...@gmail.com> wrote: > >> Your convention looks correct to me. I have no experience with MySQL so >> I'm not really familiar with the error you are getting. >> >> Can you clarify, do you still get this error without the convention? >> >> >> On Mon, Mar 15, 2010 at 1:33 AM, Isaac Inyang <isaac.iny...@gmail.com>wrote: >> >>> Hello Paul, >>> >>> I thank you very much for your mail. I downloaded a newer version of FNH. >>> >>> Below is the convention class which I wrote to apply to all entities >>> whose ID are of the UINT type. >>> >>> *Convention Code* >>> >>> public class UIntPrimaryKeyNamingConvention : IIdConvention, >>> IIdConventionAcceptance >>> { >>> public void Apply(IIdentityInstance id) >>> { >>> id.CustomSqlType("MEDIUMINT UNSIGNED"); >>> } >>> >>> public void Accept(IAcceptanceCriteria<IIdentityInspector> >>> criteria) >>> { >>> criteria.Expect(i => i.Type == typeof(uint)); >>> } >>> } >>> >>> >>> Applying this to create my database throws exceptions. Looking closely at >>> the exceptions, I noticed the exceptions are being thrown when REFERENCES to >>> such entities are being applied. >>> >>> Please, what can be done? >>> >>> Thanking you in anticipation. >>> >>> Isaac >>> >>> >>> *Details of the exception thrown can be seen below:* >>> >>> alter table `ScratchFail` >>> add index (StudentEnrolId), >>> add constraint FK19A86696AF8F2A12 >>> foreign key (StudentEnrolId) >>> references `StudentEnrol` (StudentEnrolId) >>> System.TypeInitializationException: The type initializer for 'Nested' >>> threw an exception. ---> NHibernate.HibernateException: Can't create table >>> 'netquepgcurrent.#sql-f0_27' (errno >>> : 150) ---> MySql.Data.MySqlClient.MySqlException: Can't create table >>> 'netquepgcurrent.#sql-f0_27' (errno: 150) >>> at MySql.Data.MySqlClient.MySqlStream.ReadPacket() >>> at MySql.Data.MySqlClient.NativeDriver.ReadResult() >>> at MySql.Data.MySqlClient.ResultSet.NextResult() >>> at MySql.Data.MySqlClient.MySqlDataReader.NextResult() >>> at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior >>> behavior) >>> at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() >>> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, >>> Boolean export, Boolean throwOnError, TextWriter exportOutput, IDbCommand >>> statement, String sql) >>> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, >>> Boolean export, Boolean justDrop, IDbConnection connection, TextWriter >>> exportOutput) >>> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, >>> Boolean export, Boolean justDrop) >>> --- End of inner exception stack trace --- >>> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action`1 scriptAction, >>> Boolean export, Boolean justDrop) >>> at NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Boolean script, >>> Boolean export, Boolean justDrop) >>> at netquepgcurrent.NHH..ctor() in E:\source.code\Visual Studio >>> 2008\projects\...@college\college Tools\netquepgcurrent\NHH.cs:line 40 >>> at netquepgcurrent.NHH.Nested..cctor() in E:\source.code\Visual Studio >>> 2008\projects\...@college\college Tools\netquepgcurrent\NHH.cs:line 89 >>> --- End of inner exception stack trace --- >>> at netquepgcurrent.NHH.get_Instance() in E:\source.code\Visual Studio >>> 2008\projects\...@college\college Tools\netquepgcurrent\NHH.cs:line 66 >>> at netquepgcurrent.NHH.Init() in E:\source.code\Visual Studio >>> 2008\projects\...@college\college Tools\netquepgcurrent\NHH.cs:line 71 >>> at ConsoleApplication4_Conversion.Program.Run() in >>> E:\source.code\Visual Studio 2008\projects\...@college\college >>> Tools\ConsoleApplication4-Conversion\Program.cs:line 41 >>> at ConsoleApplication4_Conversion.Program.Main(String[] args) in >>> E:\source.code\Visual Studio 2008\projects\...@college\college >>> Tools\ConsoleApplication4-Conversion\Program.cs:line 24 >>> >>> >>> >>> On Mon, Mar 8, 2010 at 12:40 AM, Paul Batum <paul.ba...@gmail.com>wrote: >>> >>>> Perhaps you don't have the latest version of the code base? >>>> >>>> >>>> http://github.com/jagregory/fluent-nhibernate/blob/master/src/FluentNHibernate/Mapping/IdentityPart.cs >>>> >>>> >>>> <http://github.com/jagregory/fluent-nhibernate/blob/master/src/FluentNHibernate/Mapping/IdentityPart.cs>(towards >>>> the bottom, you'll see theres a CustomSqlType method) >>>> >>>> >>>> On Mon, Mar 8, 2010 at 3:16 AM, Isaac Inyang <isaac.iny...@gmail.com>wrote: >>>> >>>>> Paul, >>>>> >>>>> From my experience, CustomSqlType is only available to PropertyPart >>>>> (i.e. the Map method) but not to IdentityPart (i.e. the Id method). >>>>> >>>>> Is there some way to get this done? >>>>> >>>>> Thank you. >>>>> >>>>> Isaac >>>>> >>>>> >>>>> >>>>> >>>>> On Sun, Mar 7, 2010 at 1:51 PM, Paul Batum <paul.ba...@gmail.com>wrote: >>>>> >>>>>> I believe something like this should do it: >>>>>> >>>>>> Id(i => i.PersonId) >>>>>> .CustomSqlType("MEDIUMINT") >>>>>> .GeneratedBy.Identity(); >>>>>> >>>>>> >>>>>> On Thu, Mar 4, 2010 at 8:26 PM, Isaac Inyang >>>>>> <isaac.iny...@gmail.com>wrote: >>>>>> >>>>>>> Hello, >>>>>>> >>>>>>> Using Fluent NHibernate, how do I specify the *Custom SQL Type*which my >>>>>>> *Identity *properties will be mapped to? >>>>>>> >>>>>>> Specifically, I want all Int32 fields to be mapped to MEDIUMINT (3 >>>>>>> bytes) within MySQL. Referring to the code below, I want PersonId to be >>>>>>> of >>>>>>> type MEDIUMINT in the database. >>>>>>> >>>>>>> *Entity Definition*: >>>>>>> >>>>>>> public class Person >>>>>>> { >>>>>>> public virtual int PersonId { get; set; } >>>>>>> public virtual string FullName { get; set; } >>>>>>> public virtual int Age { get; set; } >>>>>>> } >>>>>>> >>>>>>> *Mapping Class*: >>>>>>> >>>>>>> public class PersonMap : ClassMap<Person> >>>>>>> { >>>>>>> public PersonMap() >>>>>>> { >>>>>>> Id(i => i.PersonId).GeneratedBy.Identity(); >>>>>>> Map(i => i.FullName); >>>>>>> Map(i => i.Age).CustomSqlType("mediumint"); >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> *Generated HBM File*: >>>>>>> >>>>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>>>>>> default-access="property" auto-import="true" default-cascade="none" >>>>>>> default-lazy="true"> >>>>>>> <class xmlns="urn:nhibernate-mapping-2.2" >>>>>>> name="netquepgcurrent.Entities.Person, netquepgcurrent, Version=1.0.0.0, >>>>>>> Culture=neutral, PublicKeyToken=null" table="`Person`"> >>>>>>> <id name="PersonId" type="System.Int32, mscorlib, >>>>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>>>> <column name="PersonId" /> >>>>>>> <generator class="identity" /> >>>>>>> </id> >>>>>>> <property name="FullName" type="System.String, mscorlib, >>>>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>>>> <column name="FullName" /> >>>>>>> </property> >>>>>>> <property name="Age" type="System.Int32, mscorlib, >>>>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>>>> <column name="Age" sql-type="mediumint" /> >>>>>>> </property> >>>>>>> </class> >>>>>>> </hibernate-mapping> >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "Fluent NHibernate" group. >>>>>>> To post to this group, send email to >>>>>>> fluent-nhibern...@googlegroups.com. >>>>>>> To unsubscribe from this group, send email to >>>>>>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>>>>>> . >>>>>>> For more options, visit this group at >>>>>>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>>>>>> >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Fluent NHibernate" group. >>>>>> To post to this group, send email to >>>>>> fluent-nhibern...@googlegroups.com. >>>>>> To unsubscribe from this group, send email to >>>>>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>>>>> . >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Fluent NHibernate" group. >>>>> To post to this group, send email to >>>>> fluent-nhibern...@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>>>> . >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Fluent NHibernate" group. >>>> To post to this group, send email to fluent-nhibernate@googlegroups.com >>>> . >>>> To unsubscribe from this group, send email to >>>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>>> . >>>> For more options, visit this group at >>>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Fluent NHibernate" group. >>> To post to this group, send email to fluent-nhibern...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/fluent-nhibernate?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Fluent NHibernate" group. >> To post to this group, send email to fluent-nhibern...@googlegroups.com. >> To unsubscribe from this group, send email to >> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> >> . >> For more options, visit this group at >> http://groups.google.com/group/fluent-nhibernate?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Fluent NHibernate" group. > To post to this group, send email to fluent-nhibern...@googlegroups.com. > To unsubscribe from this group, send email to > fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/fluent-nhibernate?hl=en. > -- You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibern...@googlegroups.com. To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en.