On Sunday, June 8, 2014 10:09:12 PM UTC+3, Michael Bayer wrote:
>
>
> On Jun 8, 2014, at 11:08 AM, Ofir Herzas <her...@gmail.com <javascript:>> 
> wrote: 
>
> > Hi Michael, 
> > Thanks for your prompt response and for the great tools you develop. 
> > 
> > I have 2 reasons for doing that: 
> > 1. When I install my application on a new environment (blank db - no 
> alembic_version), Alembic tries to run all migrations but since I run 
> Base.metadata.create_all before Alembic upgrade, the schema is actually up 
> to date and an exception is raised. 
>
> when you run create_all(), you should also stamp the database with the 
> latest migration.  See the example at 
> http://alembic.readthedocs.org/en/latest/tutorial.html#building-an-up-to-date-database-from-scratch
>  
> for the way to do this.  Otherwise you’d be running through a huge number 
> of exceptions, but some of those statements might actually pass, e.g. if a 
> migration adds a column that was later removed, it’s a recipe for things to 
> get out of whack. 
> [Ofir] Seems like I missed that part. Thanks!
>
> > 2. Sometimes in the development phase, I run the migration but then add 
> some other changes and wish to apply them also 
> > 
> > I agree that there might be better ways to accomplish what I want 
> (insert the proper alembic_version on bootstrap and use downgrade), but I 
> do like the notion of a migration that handles some known situations. 
> > 
> > Regarding your suggestion, I guess it'll work but what about begging for 
> forgiveness instead of asking for permission? Wouldn't it be better to 
> catch the exception raised and handle it? 
>
> The issue is that the exceptions here aren’t something that can be handled 
> in an automated way, other than just skipping them all, but that really 
> doesn’t guarantee that the whole migration stream is going to run and leave 
> the database in exactly the state that was started. 

[Ofir] In that case, if an exception is raised in the migration process, 
> how can I fix it? (assuming that some migrations already passed, my schema 
> wouldn' t be in stable state)
>
>
> > 
> > Regarding the table lock, this is exactly what I'm trying to prevent 
> (script hang). Isn't there any test I could make before my script hangs? 
>
> if tables in your DB is deadlocked, nothing is going to run against those 
> tables.   Wouldn’t a test that is checking for an already locked database 
> be something external to your migration scripts?      To test for this 
> typically means querying the database’s system views for the presence of 
> open locks.  Depends on the platform.

[Ofir] I suppose it could be external to my migration script. Even so, is 
it possible to test it through sqlalchemy without using specific dialects? 

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy-alembic+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to