# Unsupported File Driver Function (80) trying to save a SQLite file

**URL:** <https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146>\
**Category:** questions\
**Tags:** drivers, sqlite\
**Created:** [June 1, 2026, 9:09pm UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146 "2026-06-01T21:09:21Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![jackp\_MDB](https://clarionhub.com/letter_avatar_proxy/v4/letter/j/49beb7/32.png) [@jackp\_MDB](https://clarionhub.com/u/jackp_MDB)\
**Post date:** [June 1, 2026, 9:09pm UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/1 "2026-06-01T21:09:22Z")

</div>

When trying to save a SQLite file, the app generates a error. The dialog says “Record was not updated,” and the message says that, “An error (Unsupported File Driver Function (80) was experienced when making changes to the xxx file.”

First time using the SQLite files and have no clue what this means/what I should be checking.

Any help appreciated.

---

<div class="post-metadata">

**Author:** ![KevinErskine](https://clarionhub.com/user_avatar/clarionhub.com/kevinerskine/32/711_2.png) [@KevinErskine](https://clarionhub.com/u/KevinErskine)\
**Post date:** [June 1, 2026, 9:50pm UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/2 "2026-06-01T21:50:14Z")

</div>

a little more information would help.

Turn on Trace.exe and upload the debug log

---

<div class="post-metadata">

**Author:** ![seanh](https://clarionhub.com/letter_avatar_proxy/v4/letter/s/4af34b/32.png) [@seanh](https://clarionhub.com/u/seanh)\
**Post date:** [June 2, 2026, 12:26am UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/3 "2026-06-02T00:26:03Z")

</div>

That can be a symptom of the buffer used by POSITION() being too small.  
In the ABC chain in C12 this was recently increased from 1024 to 2048.

If you look at

> [@Clairon 12 13999 - ABFILE.CLW: increased buffer sizes for Pos, Hold, and Current:Position to STRING(2048) to hold POSITION()](https://clarionhub.com/t/clairon-12-13999-abfile-clw-increased-buffer-sizes-for-pos-hold-and-current-position-to-string-2048-to-hold-position/9128/7):
>
> STRING(∞) then it can be bigger than the known universe!!! thinking wink

It can tell you what to change. Or you could look at altering your key sizes, assuming that this is in fact the problem

---

<div class="post-metadata">

**Author:** ![CarlBarnes](https://clarionhub.com/user_avatar/clarionhub.com/carlbarnes/32/1859_2.png) [@CarlBarnes](https://clarionhub.com/u/CarlBarnes)\
**Post date:** [June 2, 2026, 1:41am UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/4 "2026-06-02T01:41:32Z")

</div>

> [@jackp\_MDB](#):
>
> When trying to save a SQLite file, the app generates a error.

As Kevin said more details.

Like does “save a SQLite file” mean are you in a Browse that opened a record in a Form and you pushed OK button? Post your FILE declaration. Did your Create the file using SQL code or did you let a Clarion CREATE() do it.

IMO the SQLite driver is generally poor in typical App use, like it feels unfinished.

There’s a Clarion Live where we remade the Invoice example using SQLite. I tried creating a duplicate key and the error returned by the driver was not the right one, it was some nonsense.

---

<div class="post-metadata">

**Author:** ![CarlBarnes](https://clarionhub.com/user_avatar/clarionhub.com/carlbarnes/32/1859_2.png) [@CarlBarnes](https://clarionhub.com/u/CarlBarnes)\
**Post date:** [June 2, 2026, 1:47am UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/5 "2026-06-02T01:47:54Z")

</div>

AI came back with this…

The error **“Unsupported File Driver Function (80)”** is a [Clarion development environment](https://www.google.com/url?sa=i&source=web&rct=j&url=http://clarion.help/doku.php?id%3Dtrappable_run_time_errors.htm&ved=2ahUKEwi_l7Cmt-eUAxXd1vACHWo6EngQy_kOegoIAggACAAIBBAB&opi=89978449&cd&psig=AOvVaw0mCxZJHv58hDcdbgdtN6Zj&ust=1780451087969000) error code indicating that the file driver has detected a data structure or file access statement that it cannot process. When attempting to save an SQLite database table in Clarion, this specifically happens because the SQLite file driver encounters a schema mismatch—most commonly a column set as an identity/auto-increment but configured as a string data type, or an unmapped primary key configuration. [[1](http://clarion.help/doku.php?id=trappable_run_time_errors.htm)]

Why This Happens

- **String Auto-Increments:** You have checked **`IsIdentity`** or **`AutoIncrement`** on a column that is mapped to a string data type (`CSTRING`, `STRING`) instead of a valid integer type (`LONG`).
- **Missing or Mismatched PK:** The SQLite backend table requires an integer primary key for auto-increment functionality, but your Clarion dictionary (`.DCT`) does not match the underlying database constraints.
- **Unsupported Statements:** The template code is trying to issue a backend statement format that the SQLite driver doesn’t support. [[1](http://clarion.help/doku.php?id=trappable_run_time_errors.htm), [2](https://www.maragu.dev/blog/go-and-sqlite-in-the-cloud), [3](https://code.djangoproject.com/ticket/32513?cnum_hist=8&cversion=0)]

* * *

How to Fix It

1. Check Column Identity Settings

Review your Clarion data dictionary (`.DCT`) for the SQLite table:

- Ensure that any column marked as an **Identity Column** or **Auto-Increment** is explicitly a **`LONG`** (or matching 4-byte/8-byte integer) data type.
- If a text/string column needs a unique identifier, uncheck the `IsIdentity` attribute and handle the string generation manually in your code.

1. Match the SQLite Native Schema

SQLite naturally handles auto-increment using a specific column syntax. Ensure your underlying table was created natively as:

sql

```auto
CREATE TABLE table_name (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    ...
);

```

Use code with caution.

In Clarion, map this `id` field exactly as a `LONG` with the auto-increment property enabled.

1. Verify Driver String Configurations

If you are passing options through the driver string option parameter (in the table properties), verify your syntax. Passing unparsed or poorly formatted parameters can trigger an Error 80 statement failure. [[1](http://clarion.help/doku.php?id=trappable_run_time_errors.htm)]

---

<div class="post-metadata">

**Author:** ![Bruce](https://clarionhub.com/letter_avatar_proxy/v4/letter/b/ccd318/32.png) [@Bruce](https://clarionhub.com/u/Bruce)\
**Post date:** [June 2, 2026, 5:28am UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/6 "2026-06-02T05:28:43Z")

</div>

The short answer is that not all drivers support all file driver commands. For example the DOS driver doesn’t support KEY commands and so on.

The commands supported by the shipping SQL drivers are also limited (and covered in the docs). If you call an unsupported function, you get this error.

Of course it’s also possible to be getting the wrong error - the Sqlite driver has its share of bugs.

The better option these days is to use the SQLite2 driver. It’s free on github or cheap if you want the examples, template etc.  
[https://capesoft.com/accessories/filedriverkitsp.htm](https://capesoft.com/accessories/filedriverkitsp.htm)

This has fewer bugs, is faster, more secure and supports far more of the file driver commands (not to mention adding more commands.) Frankly, if you’re going to use SQLite is a no-brainer.

SQLite2 is an “actual file driver” so all existing code just works.

---

<div class="post-metadata">

**Author:** ![JonW](https://clarionhub.com/user_avatar/clarionhub.com/jonw/32/1344_2.png) [@JonW](https://clarionhub.com/u/JonW)\
**Post date:** [June 3, 2026, 11:50am UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/7 "2026-06-03T11:50:05Z")

</div>

My guess is that you have not declared a primary key for the file/table. You have asked the driver to update the row it has and it wants to create an update statement like this:

update yourfile set =   
where yourfile\_ID =

but since you have not declared a primary key, it can’t.

---

<div class="post-metadata">

**Author:** ![jackp\_MDB](https://clarionhub.com/letter_avatar_proxy/v4/letter/j/49beb7/32.png) [@jackp\_MDB](https://clarionhub.com/u/jackp_MDB)\
**Post date:** [June 3, 2026, 2:57pm UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/8 "2026-06-03T14:57:49Z")

</div>

Thanks for all the suggestions and information…I’ll let you know when I solve the issue.

---

<div class="post-metadata">

**Author:** ![jackp\_MDB](https://clarionhub.com/letter_avatar_proxy/v4/letter/j/49beb7/32.png) [@jackp\_MDB](https://clarionhub.com/u/jackp_MDB)\
**Post date:** [June 3, 2026, 4:39pm UTC](https://clarionhub.com/t/unsupported-file-driver-function-80-trying-to-save-a-sqlite-file/9146/9 "2026-06-03T16:39:42Z")

</div>

I started getting other error codes that didn’t make sense…I deleted the procedure and re-coded it. Now everything is good???

Could not find what I had wrong in the original procedure.

Thank you for all the support on trying to fix this.
