sqlite表中的最大列数

问题描述

我想问一个sqlite3表的最大列数是多少?我找到这样的答案:

Maximum Number Of Columns
The maximum number of columns is 32767 in a table. The default setting for sqlITE_MAX_COLUMN is 2000.

但是,当列数为1000时,我们会看到超出最大列数的错误。 那么哪一个是正确的呢?我们在Python中使用sqlAlchemy == 1.3.8。

谢谢。

解决方法

SQLITE_MAX_COLUMN的默认设置为2000。您可以在编译时将其更改为最大为32767的值。另一方面,许多经验丰富的数据库设计人员会争辩说,规范化的数据库永远不需要超过100列。一张桌子。

https://sqlite.org/limits.html

有关增加列限制的说明,请参见此链接。

https://dba.stackexchange.com/questions/221508/how-to-increase-column-limit-of-a-table-in-sqlite

,

您的问题没有常规答案。如您已经发现的,列的最大可配置数量为32767。但是,关键是它是可配置的,因此可以对其进行调整。比较https://www.sqlite.org/limits.html

使用sqlite3_limit(db,SQLITE_LIMIT_COLUMN,size)接口可以在运行时降低最大列数。

您的情况似乎已将限制设置为1000,因为您显然遇到了该限制。但是,上面的页面上继续说

[...]许多经验丰富的数据库设计人员会争辩说,规范化的数据库在一个表中永远不需要超过100列。

因此,您可能想要增加SQLITE_MAX_COLUMN设置,或者重新考虑数据库设计。

,

我认为您几乎可以回答自己的问题。

根据此处的官方文档here

最大列数

SQLITE_MAX_COLUMN编译时参数用于设置以下内容的上限:

  • 表中的列数索引中的列数

  • 视图中的列数SET子句中的术语数 UPDATE语句的数量a的结果集中的列数 SELECT语句GROUP BY或ORDER BY子句中的术语数

  • INSERT语句中的值数

SQLITE_MAX_COLUMN的默认设置为2000。您可以在编译时将其更改为最大32767的值。

另一方面,许多经验丰富的数据库设计人员会争辩说,规范化的数据库在一个表中永远不需要超过100列。

其他对此的完整答案,您可以在这里找到:How to change SQLITE_MAX_COLUMN in Python?

在这里:How to increase column limit of a table in SQLite?