Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

This project is archived and is in readonly mode.

Non-standard SQL generated in column definition for nullable columns in create table DDL (rails 2.1)

#398

In migrations create table generates non-standard SQL which breaks functioning of sql standard compliant databases. The create table method

create_table :accounts, :force => true do |t|

t.integer :firm_id

t.integer :credit_limit

end

generates the sql as below

CREATE TABLE accounts (id ...., firm_id integer DEFAULT NULL NULL, credit_limit integer DEFAULT NULL NULL)

Focussing on 'DEFAULT NULL NULL', the last NULL is not standard SQL syntax compliant and hence will not work for DB2 and Oracle.

This can be tested here

http://developer.mimer.com/valid...

basically compliant sql syntax is 'COLNAME TYPE DEFAULT CONSTRAINTS'. Constraints is category that this falls into. 'NOT NULL' is a valid constraint, 'NULL' is not.

Reported by Praveen Devarao · June 12th, 2008 @ 07:21 AM

State: resolved
Milestone: none
Assigned to: nobody
Importance: none

Activity

  1. Praveen Devarao
  2. Repository
    Repository
    • State changed from new to resolved
    • Tag cleared.

    (from [74c3c701f73407a5bb1a11be2b5b221fe39895d3]) Don't set "NULL" as a constraint on nullable columns [#398 Non-standard SQL generated in column definition for nullable columns in creat... state:resolved]

    This is already the default and adding it breaks SQL standards compatibility. http://github.com/rails/rails/co...

    August 23rd, 2008 @ 06:22 PM

  3. Repository
    Repository

    (from [ddb8c9c92ed09d33ae573891a4ef0d566622f317]) Don't set "NULL" as a constraint on nullable columns [#398 Non-standard SQL generated in column definition for nullable columns in creat... state:resolved]

    This is already the default and adding it breaks SQL standards compatibility.

    Conflicts:

    activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
    

    http://github.com/rails/rails/co...

    August 25th, 2008 @ 09:26 AM

  4. Harlan Crystal
    Harlan Crystal

    This breaks the case of:

    change_column :table, :column, :null => true

    (when it was previously non-null).

    Discussed here, in ticket #26 Fix for change_column :null => true in migrations:

    http://rails.lighthouseapp.com/p...

    March 23rd, 2009 @ 10:27 PM