The SQLite adapter works with both the 2.x and 3.x series of SQLite with the sqlite-ruby drivers (available both as gems and from rubyforge.org/projects/sqlite-ruby/).
Options:
:database - Path to the database file.
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 250
250: def change_column_null(table_name, column_name, null, default = nil)
251: unless null || default.nil?
252: execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL")
253: end
254: alter_table(table_name) do |definition|
255: definition[column_name].null = null
256: end
257: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 80
80: def disconnect!
81: super
82: @connection.close rescue nil
83: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 278
278: def empty_insert_statement_value
279: "VALUES(NULL)"
280: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 214
214: def rename_table(name, new_name)
215: execute "ALTER TABLE #{quote_table_name(name)} RENAME TO #{quote_table_name(new_name)}"
216: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 72
72: def requires_reloading?
73: true
74: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 153
153: def select_rows(sql, name = nil)
154: execute(sql, name).map do |row|
155: (0...(row.size / 2)).map { |i| row[i] }
156: end
157: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 76
76: def supports_add_column?
77: sqlite_version >= '3.1.6'
78: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 60
60: def supports_ddl_transactions?
61: sqlite_version >= '2.0.0'
62: end
See: www.sqlite.org/lang_altertable.html SQLite has an additional restriction on the ALTER TABLE statement
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 220
220: def valid_alter_table_options( type, options)
221: type.to_sym != :primary_key
222: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 382
382: def default_primary_key_type
383: if supports_autoincrement?
384: 'INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL'
385: else
386: 'INTEGER PRIMARY KEY NOT NULL'
387: end
388: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 378
378: def sqlite_version
379: @sqlite_version ||= SQLiteAdapter::Version.new(select_value('select sqlite_version(*)'))
380: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 293
293: def table_structure(table_name)
294: structure = @connection.table_info(quote_table_name(table_name))
295: raise(ActiveRecord::StatementInvalid, "Could not find table '#{table_name}'") if structure.empty?
296: structure
297: end
# File lib/active_record/connection_adapters/sqlite_adapter.rb, line 390
390: def translate_exception(exception, message)
391: case exception.message
392: when /column(s)? .* (is|are) not unique/
393: RecordNotUnique.new(message, exception)
394: else
395: super
396: end
397: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.