Class ActiveRecord::ConnectionAdapters::SQLiteAdapter
In: vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
Parent: AbstractAdapter

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.

Methods

External Aliases

remove_column -> remove_columns

Public Instance methods

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 242
242:       def change_column_null(table_name, column_name, null, default = nil)
243:         unless null || default.nil?
244:           execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL")
245:         end
246:         alter_table(table_name) do |definition|
247:           definition[column_name].null = null
248:         end
249:       end

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 87
87:       def disconnect!
88:         super
89:         @connection.close rescue nil
90:       end

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 270
270:       def empty_insert_statement(table_name)
271:         "INSERT INTO #{table_name} VALUES(NULL)"
272:       end

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 213
213:       def rename_table(name, new_name)
214:         execute "ALTER TABLE #{name} RENAME TO #{new_name}"
215:       end

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 83
83:       def requires_reloading?
84:         true
85:       end

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 149
149:       def select_rows(sql, name = nil)
150:         execute(sql, name).map do |row|
151:           (0...(row.size / 2)).map { |i| row[i] }
152:         end
153:       end

Protected Instance methods

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 372
372:         def catch_schema_changes
373:           return yield
374:         rescue ActiveRecord::StatementInvalid => exception
375:           if exception.message =~ /database schema has changed/
376:             reconnect!
377:             retry
378:           else
379:             raise
380:           end
381:         end

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 387
387:         def default_primary_key_type
388:           if supports_autoincrement?
389:             'INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL'.freeze
390:           else
391:             'INTEGER PRIMARY KEY NOT NULL'.freeze
392:           end
393:         end

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 383
383:         def sqlite_version
384:           @sqlite_version ||= select_value('select sqlite_version(*)')
385:         end

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 287
287:         def table_structure(table_name)
288:           returning structure = execute("PRAGMA table_info(#{quote_table_name(table_name)})") do
289:             raise(ActiveRecord::StatementInvalid, "Could not find table '#{table_name}'") if structure.empty?
290:           end
291:         end

[Validate]