---
name: "DBIx::Class::Storage::DBI::SQLite"
section: "3pm"
platform: "linux"
package: "libdbix-class-perl"
version: "0.082844-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/DBIx::Class::Storage::DBI::SQLite"
---

# DBIx::Class::Storage::DBI::SQLite(3pm)

Automatic primary key class for SQLite

## NAME

DBIx::Class::Storage::DBI::SQLite - Automatic primary key class for SQLite

## SYNOPSIS

```
  # In your table classes
  use base 'DBIx::Class::Core';
  __PACKAGE__->set_primary_key('id');
```

## DESCRIPTION

This class implements autoincrements for SQLite.

### Known Issues

- RT79576

  ```
   NOTE - This section applies to you only if ALL of these are true:
    * You are or were using DBD::SQLite with a version lesser than 1.38_01
    * You are or were using DBIx::Class versions between 0.08191 and 0.08209
      (inclusive) or between 0.08240-TRIAL and 0.08242-TRIAL (also inclusive)
    * You use objects with overloaded stringification and are feeding them
      to DBIC CRUD methods directly
  ```

  An unfortunate chain of events led to DBIx::Class silently hitting the problem described in RT#79576 \<https://rt.cpan.org/Public/Bug/Display.html?id=79576\>.

  In order to trigger the bug condition one needs to supply **more than one** bind value that is an object with overloaded stringification (numification is not relevant, only stringification is). When this is the case the internal DBIx::Class call to `"$sth->bind_param"` would be executed in a way that triggers the above-mentioned DBD::SQLite bug. As a result all the logs and tracers will contain the expected values, however SQLite will receive **all** these bind positions being set to the value of the **last** supplied stringifiable object.

  Even if you upgrade DBIx::Class (which works around the bug starting from version 0.08210) you may still have corrupted/incorrect data in your database. DBIx::Class warned about this condition for several years, hoping to give anyone affected sufficient notice of the potential issues. The warning was removed in 2015/v0.082820.

## METHODS

### connect\_call\_use\_foreign\_keys

Used as:

```
    on_connect_call => 'use_foreign_keys'
```

In connect\_info to turn on foreign key (including cascading) support for recent versions of SQLite and DBD::SQLite.

Executes:

```
  PRAGMA foreign_keys = ON
```

See \<http://www.sqlite.org/foreignkeys.html\> for more information.

## FURTHER QUESTIONS?

Check the list of additional DBIC resources.

## COPYRIGHT AND LICENSE

This module is free software copyright by the DBIx::Class (DBIC) authors. You can redistribute it and/or modify it under the same terms as the DBIx::Class library.
