So apparently this is caused because the migration creates this new column, 
(in my case "name__tmp") and adds the new constraints to it, but since it's 
doing it to a database with data in it, the new column defaults to having 
null values. Since the constraint is 'notnull' it fails to create it. 
However, even adding a default didn't seem to help, as I think the 
'default' is not set at the database level.

On Tuesday, May 8, 2012 3:56:28 PM UTC-7, Derek wrote:
>
> Looks like the workaround is adding a "requires=IS_NOT_EMPTY()" so the 
> field definition.
>
> On Tuesday, May 8, 2012 3:39:36 PM UTC-7, Derek wrote:
>>
>> <class 'pyodbc.ProgrammingError'> ('42000', "[42000] [Microsoft][ODBC SQL 
>> Server Driver][SQL Server]ALTER TABLE only allows columns to be added that 
>> can contain nulls, or have a DEFAULT definition specified, or the column 
>> being added is an identity or timestamp column, or alternatively if none of 
>> the previous conditions are satisfied the table must be empty to allow 
>> addition of this column. Column 'name__tmp' cannot be added to non-empty 
>> table 'customers' because it does not satisfy these conditions. (4901) 
>> (SQLExecDirectW)")
>>
>> I had a table that existed previously, but I wanted to add a 
>> 'notnull=True' constraint to it. Apparently, I am not allowed to do that 
>> because I get this error (SQL 2005).
>>
>> Is there a workaround? This is 1.99.7.
>>
>

Reply via email to