2011-05-24 2 views
24

Je suis nouveau sur sqlite. Je veux connaître la limite de taille maximale du type de données varchar dans sqlite?Quelle est la limite de taille maximale du type de données varchar dans sqlite?

Quelqu'un peut-il me suggérer des informations à ce sujet? Je cherchai sur le site sqlite.org et ils give the answer as:

Q. Quelle est la taille maximale d'un VARCHAR dans SQLite?

A. SQLite n'applique pas la longueur d'un VARCHAR. Vous pouvez déclarer un VARCHAR (10) et SQLite sera heureux de vous laisser y mettre 500 caractères . Et il gardera tous les 500 caractères intacts - il ne tronque jamais.

mais je veux connaître la taille maximale exacte du type de données varchar en sqlite.

+0

Vous pouvez lire aussi ce http://www.sqlite.org/limits.html – taro

Répondre

28

de http://www.sqlite.org/limits.html

longueur maximale d'une chaîne ou BLOB

Le nombre maximal d'octets dans une chaîne ou BLOB dans SQLite est définie par le préprocesseur macro SQLITE_MAX_LENGTH. La valeur par défaut de cette macro est de 1 milliard (1 000 million ou 1 000 000 000). Vous pouvez augmenter ou diminuer cette valeur à compilation à l'aide d'une option de ligne de commande comme ceci:

-DSQLITE_MAX_LENGTH = 123456789 L'implémentation actuelle ne fera que supporter une longueur de chaîne ou blob jusqu'à 231-1 ou 2147483647. Et certaines fonctions intégrées telles que hex() peuvent échouer bien avant ce point. Dans applications sensibles à la sécurité, il est préférable de ne pas essayer d'augmenter la longueur maximum de chaîne et de blob . Dans fait, vous pourriez faire bien d'abaisser la chaîne maximale et la longueur de blob à quelque chose de plus dans la gamme de quelques millions si cela est possible.

Pendant une partie de l'INSERT de SQLite et traitement SELECT, le contenu complète de chaque rangée dans la base de données est codé comme un seul BLOB. Ainsi, le paramètre SQLITE_MAX_LENGTH également détermine le nombre maximal d'octets dans une rangée.

+1

Pour référence: en supposant des caractères de 1 octet, ce qui est légèrement inférieur à un GB. (Ou exactement un Go, si la base 10 est la façon dont vous mesurez les bits) –

+0

Combien de caractères peuvent être stockés dans 1 octet dans SQLite, exactement? – renatov

+1

@renatov Je ne pense pas que vous pouvez mesurer en caractères, cela dépend de l'encodage que vous utilisez pour la base de données https://www.sqlite.org/datatype3.html et le caractère qui est entré. UTF-8 par exemple peut avoir entre 1 et 4 octets par caractère, si ASCII utilise seulement 1 http: // stackoverflow.com/questions/5290182/comment-beaucoup-octets-fait-un-caractère-unicode-prendre –

Questions connexes