Summary: We can't make some database migrates on MySQL because we can't 
DROP column with foreign key. Suggestions?

Em segunda-feira, 18 de agosto de 2014 09h46min49s UTC-3, Diogo Munaro 
escreveu:
>
> Hey guys, I'm trying to do CI (continuous integration) on web2py 
> application.
>
> I really need automatic database migration and web2py is really good with 
> it, but using MySQL I notice that we have some caveats 
> <http://www.web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#MySQL>
> :
>
> I can live without more than one alter table on migrations, but I can't 
> without this other caveat that is not specified by web2py but is on mysql 
> manual 
> <http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html>:
>
> Setting foreign_key_checks to 0 can also be useful for ignoring foreign 
>> key constraints during LOAD DATA and ALTER TABLE operations. *However, 
>> even if foreign_key_checks = 0, MySQL does not permit the creation of a 
>> foreign key constraint where a column references a nonmatching column type*. 
>> Also, if a table has foreign key constraints, ALTER TABLE cannot be used to 
>> alter the table to use another storage engine. To change the storage 
>> engine, you must drop any foreign key constraints first.
>>
>
> So, I can't drop a column without dropping it's foreign key constraints 
> first, and I always get error 150 if I try.
>
> Now I'm migrating my database to Postgres, because web2py REALLY support 
> migrations on it. Just look this citation inside postgres manual 
> <http://www.postgresql.org/docs/9.1/static/sql-altertable.html>:
>
> *This form drops a column from a table. Indexes and table constraints 
>> involving the column will be automatically dropped as well.* You will 
>> need to say CASCADE if anything outside the table depends on the column, 
>> for example, foreign key references or views. If IF EXISTS is specified and 
>> the column does not exist, no error is thrown. In this case a notice is 
>> issued instead.
>>
>
> What should we do to solve this issue with MySQL?  A Stackoverflow 
> question 
> <http://stackoverflow.com/questions/338978/mysql-innodb-need-to-delete-column-and-accompanying-foreign-key-constraint-a>
>  said 
> that we should create a table replica, apply migrations on it and than 
> migrate data.
>
> I don't know any other migrations solutions that do it on python. I think 
> South have same problem because new Django 1.7 migration feature South-like 
> have a lot of caveats: 
> https://docs.djangoproject.com/en/dev/topics/migrations/
>
> What do you think about make migrations as stackoverflow question suggest? 
> (
> http://stackoverflow.com/questions/338978/mysql-innodb-need-to-delete-column-and-accompanying-foreign-key-constraint-a
> )
>
> Is there another way to do that with MySQL?
>  
>
>>  Regards
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to