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.

Reply via email to