db-torque-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luigi <nad...@iol.it>
Subject Re: Torque does not support InnoDB tables yet?
Date Wed, 13 Aug 2003 12:16:27 GMT
Henning P. Schmiedehausen wrote:
> Thomas Schindl <tom.schindl@profile.co.at> writes:
> 
> Add a new "mysql-inno" or "mysql-4" database type to the
> generator. Should be pretty simple, basically you copy the mysql
> templates and change a few names and parameters.
> 
> Patches welcome. ;-)
> 
> 	Regards
> 		Henning
> 

Hallo,

The solution I am using is the following one (it works, apparently, but 
I am no torque guru):

I have modified the templates/sql/base/mysql/foreignkey.vm file from:

-----------
#foreach ($fk in $table.ForeignKeys)
     FOREIGN KEY ($fk.LocalColumnNames) REFERENCES $fk.ForeignTableName 
($fk.ForeignColumnNames),
#end
-----------

to:

-----------
#foreach ($fk in $table.ForeignKeys)
     FOREIGN KEY ($fk.LocalColumnNames) REFERENCES $fk.ForeignTableName 
($fk.ForeignColumnNames)
#if ($fk.hasOnUpdate())
     ON UPDATE $fk.OnUpdate
#end
#if ($fk.hasOnDelete())
     ON DELETE $fk.OnDelete
#end
,
#end
-----------

to allow for the generation of foreign keys costraints
This should be compatible with both innodb and myisam tables and with 
4.0.x and 3.23.5x versions of mysql (the unsupported options are simply 
ignored by the db versions which don't support them).

Then to use Innodb tables, the line regarding the innodb table type must 
be uncommented (and myisam commented) in the file: 
templates/sql/base/mysql/db.props

Regards
Luigi


> 
> 	
> 
> 
>>On Wed, 2003-08-06 at 16:04, Jeroen Peschier wrote:
>>
>>>Hi all,
>>>
>>>My Torque project uses a MySQL 4.1 database. I have many onUpdate and 
>>>onDelete restrictions in the project's schema.xml. When the SQL code 
>>>gets generated it outputs the foreign keys fine in the SQL, but no 
>>>ONUPDATE or ONDELETE constraints to be found... Is this a known issue?
>>>
>>>There's also no table type in the CREATE TABLE statements. I think MySQL 
>>>defaults to using MyISAM while I want InnoDB. How do I specify a table 
>>>type? Come to think of it, why even specify a table type if foreign keys 
>>>plus constraints are defined and the database is MySQL. InnoDB should be 
>>>implied, no?
> 
> 
>>InnoDB => You have to "comment in" that in db.props-file of mysql.
> 
> 
>>>Another minor thing I cannot specify in the schema is the character set 
>>>and collation to be used on a table.
>>>
>>>As is it now I have a post-create SQL-script that does a bunch of ALTER 
>>>TABLE statement and sets the required character set and collation. I 
>>>really don't want to add the referential constraints  manually. It kinda 
>>>defeats the purpose of having it generated :)
>>>
>>>Open for suggestions...
>>>
>>>Jeroen
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
>>>For additional commands, e-mail: torque-user-help@db.apache.org
>>>
> 
> 
> 
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
>>For additional commands, e-mail: torque-user-help@db.apache.org
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
For additional commands, e-mail: torque-user-help@db.apache.org


Mime
View raw message