Documentation Source Text

Hex Artifact Content
Login

Artifact 7fc7e0cffc8c28b08b2876a1760189e0e0bd91f7:


0000: 3c 74 69 74 6c 65 3e 38 2b 33 20 46 69 6c 65 6e  <title>8+3 Filen
0010: 61 6d 65 73 3c 2f 74 69 74 6c 65 3e 0a 3c 74 63  ames</title>.<tc
0020: 6c 3e 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 73  l>hd_keywords {s
0030: 68 6f 72 74 20 66 69 6c 65 6e 61 6d 65 73 7d 3c  hort filenames}<
0040: 2f 74 63 6c 3e 0a 0a 3c 68 31 20 61 6c 69 67 6e  /tcl>..<h1 align
0050: 3d 22 63 65 6e 74 65 72 22 3e 53 51 4c 69 74 65  ="center">SQLite
0060: 20 41 6e 64 20 38 2b 33 20 46 69 6c 65 6e 61 6d   And 8+3 Filenam
0070: 65 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 54 68 65  es</h1>..<p>.The
0080: 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 69 67 75   default configu
0090: 72 61 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65  ration of SQLite
00a0: 20 61 73 73 75 6d 65 73 20 74 68 65 20 75 6e 64   assumes the und
00b0: 65 72 6c 79 69 6e 67 20 66 69 6c 65 73 79 73 74  erlying filesyst
00c0: 65 6d 0a 73 75 70 70 6f 72 74 73 20 6c 6f 6e 67  em.supports long
00d0: 20 66 69 6c 65 6e 61 6d 65 73 2e 0a 3c 2f 70 3e   filenames..</p>
00e0: 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 64 6f 65  ..<p>.SQLite doe
00f0: 73 20 6e 6f 74 20 69 6d 70 6f 73 65 20 61 6e 79  s not impose any
0100: 20 6e 61 6d 69 6e 67 20 72 65 71 75 69 72 65 6d   naming requirem
0110: 65 6e 74 73 20 6f 6e 20 64 61 74 61 62 61 73 65  ents on database
0120: 20 66 69 6c 65 73 2e 0a 53 51 4c 69 74 65 20 77   files..SQLite w
0130: 69 6c 6c 20 68 61 70 70 69 6c 79 20 77 6f 72 6b  ill happily work
0140: 20 77 69 74 68 20 61 20 64 61 74 61 62 61 73 65   with a database
0150: 20 66 69 6c 65 20 74 68 61 74 20 68 61 73 20 61   file that has a
0160: 6e 79 20 66 69 6c 65 6e 61 6d 65 20 65 78 74 65  ny filename exte
0170: 6e 73 69 6f 6e 0a 6f 72 20 77 69 74 68 20 6e 6f  nsion.or with no
0180: 20 65 78 74 65 6e 73 69 6f 6e 20 61 74 20 61 6c   extension at al
0190: 6c 2e 0a 57 68 65 6e 20 61 75 78 69 6c 69 61 72  l..When auxiliar
01a0: 79 20 66 69 6c 65 73 20 61 72 65 20 6e 65 65 64  y files are need
01b0: 65 64 20 66 6f 72 20 61 20 5b 72 6f 6c 6c 62 61  ed for a [rollba
01c0: 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 6f 72 0a 61  ck journal] or.a
01d0: 20 5b 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f   [write-ahead lo
01e0: 67 5d 20 6f 72 20 66 6f 72 20 6f 6e 65 20 6f 66  g] or for one of
01f0: 20 74 68 65 20 6f 74 68 65 72 20 6b 69 6e 64 73   the other kinds
0200: 20 6f 66 0a 5b 74 65 6d 70 6f 72 61 72 79 20 64   of.[temporary d
0210: 69 73 6b 20 66 69 6c 65 73 5d 2c 20 74 68 65 6e  isk files], then
0220: 20 74 68 65 20 6e 61 6d 65 20 66 6f 72 20 74 68   the name for th
0230: 65 20 61 75 78 69 6c 69 61 72 79 20 66 69 6c 65  e auxiliary file
0240: 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 0a 63 6f 6e   is normally.con
0250: 73 74 72 75 63 74 65 64 20 62 79 20 61 70 70 65  structed by appe
0260: 6e 64 69 6e 67 20 61 20 73 75 66 66 69 78 20 6f  nding a suffix o
0270: 6e 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74  nto the end of t
0280: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
0290: 20 6e 61 6d 65 2e 0a 46 6f 72 20 65 78 61 6d 70   name..For examp
02a0: 6c 65 2c 20 69 66 20 74 68 65 20 6f 72 69 67 69  le, if the origi
02b0: 6e 61 6c 20 64 61 74 61 62 61 73 65 20 69 73 20  nal database is 
02c0: 63 61 6c 6c 20 22 3c 74 74 3e 61 70 70 2e 64 62  call "<tt>app.db
02d0: 3c 2f 74 74 3e 22 20 74 68 65 6e 0a 74 68 65 20  </tt>" then.the 
02e0: 5b 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61  [rollback journa
02f0: 6c 5d 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65  l] will be calle
0300: 64 20 22 3c 74 74 3e 61 70 70 2e 64 62 2d 6a 6f  d "<tt>app.db-jo
0310: 75 72 6e 61 6c 3c 2f 74 74 3e 22 0a 61 6e 64 20  urnal</tt>".and 
0320: 74 68 65 20 5b 77 72 69 74 65 2d 61 68 65 61 64  the [write-ahead
0330: 20 6c 6f 67 5d 20 77 69 6c 6c 20 62 65 20 63 61   log] will be ca
0340: 6c 6c 65 64 20 22 3c 74 74 3e 61 70 70 2e 64 62  lled "<tt>app.db
0350: 2d 77 61 6c 3c 2f 74 74 3e 22 2e 0a 54 68 69 73  -wal</tt>"..This
0360: 20 61 70 70 72 6f 61 63 68 20 74 6f 20 61 75 78   approach to aux
0370: 69 6c 69 61 72 79 20 66 69 6c 65 20 6e 61 6d 69  iliary file nami
0380: 6e 67 20 77 6f 72 6b 73 20 67 72 65 61 74 20 6f  ng works great o
0390: 6e 20 73 79 73 74 65 6d 73 20 74 68 61 74 0a 73  n systems that.s
03a0: 75 70 70 6f 72 74 20 6c 6f 6e 67 20 66 69 6c 65  upport long file
03b0: 6e 61 6d 65 73 2e 20 20 42 75 74 20 6f 6e 20 73  names.  But on s
03c0: 79 73 74 65 6d 73 20 74 68 61 74 20 69 6d 70 6f  ystems that impo
03d0: 73 65 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 0a  se 8+3 filename.
03e0: 63 6f 6e 73 74 72 61 69 6e 74 73 2c 20 74 68 65  constraints, the
03f0: 20 61 75 78 69 6c 69 61 72 79 20 66 69 6c 65 73   auxiliary files
0400: 20 64 6f 20 6e 6f 74 20 66 69 74 20 74 68 65 20   do not fit the 
0410: 38 2b 33 20 66 6f 72 6d 61 74 20 65 76 65 6e 20  8+3 format even 
0420: 74 68 6f 75 67 68 0a 74 68 65 20 6f 72 69 67 69  though.the origi
0430: 6e 61 6c 20 64 61 74 61 62 61 73 65 20 66 69 6c  nal database fil
0440: 65 20 64 6f 65 73 2e 0a 3c 2f 70 3e 0a 0a 0a 3c  e does..</p>...<
0450: 68 32 3e 43 68 61 6e 67 69 6e 67 20 46 69 6c 65  h2>Changing File
0460: 73 79 73 74 65 6d 73 3c 2f 68 32 3e 0a 0a 3c 70  systems</h2>..<p
0470: 3e 0a 54 68 65 20 72 65 63 6f 6d 6d 65 6e 64 65  >.The recommende
0480: 64 20 66 69 78 20 66 6f 72 20 74 68 69 73 20 70  d fix for this p
0490: 72 6f 62 6c 65 6d 20 69 73 20 74 6f 20 73 65 6c  roblem is to sel
04a0: 65 63 74 20 61 20 64 69 66 66 65 72 65 6e 74 0a  ect a different.
04b0: 66 69 6c 65 73 79 73 74 65 6d 2e 20 20 54 68 65  filesystem.  The
04c0: 73 65 20 64 61 79 73 2c 20 74 68 65 72 65 20 69  se days, there i
04d0: 73 20 61 20 68 75 67 65 20 73 65 6c 65 63 74 69  s a huge selecti
04e0: 6f 6e 20 6f 66 20 68 69 67 68 2d 70 65 72 66 6f  on of high-perfo
04f0: 72 6d 61 6e 63 65 2c 20 0a 72 65 6c 69 61 62 6c  rmance, .reliabl
0500: 65 2c 20 70 61 74 65 6e 74 2d 66 72 65 65 20 66  e, patent-free f
0510: 69 6c 65 73 79 73 74 65 6d 73 20 74 68 61 74 20  ilesystems that 
0520: 73 75 70 70 6f 72 74 20 6c 6f 6e 67 20 66 69 6c  support long fil
0530: 65 6e 61 6d 65 73 2e 20 20 0a 57 68 65 72 65 20  enames.  .Where 
0540: 70 6f 73 73 69 62 6c 65 2c 20 69 74 20 69 73 20  possible, it is 
0550: 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74  recommended that
0560: 20 65 6d 62 65 64 64 65 64 20 64 65 76 69 63 65   embedded device
0570: 73 20 75 73 65 20 6f 6e 65 0a 6f 66 20 74 68 65  s use one.of the
0580: 73 65 20 6f 74 68 65 72 20 66 69 6c 65 73 79 73  se other filesys
0590: 74 65 6d 73 2e 20 20 54 68 69 73 20 77 69 6c 6c  tems.  This will
05a0: 20 61 76 6f 69 64 20 63 6f 6d 70 61 74 69 62 69   avoid compatibi
05b0: 6c 69 74 79 20 69 73 73 75 65 73 0a 61 6e 64 20  lity issues.and 
05c0: 74 68 65 20 64 61 6e 67 65 72 20 6f 66 0a 5b 64  the danger of.[d
05d0: 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 69  atabase corrupti
05e0: 6f 6e 20 63 61 75 73 65 64 20 62 79 20 69 6e 63  on caused by inc
05f0: 6f 6e 73 69 73 74 65 6e 74 20 75 73 65 20 6f 66  onsistent use of
0600: 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 5d 2e   8+3 filenames].
0610: 0a 3c 2f 70 3e 0a 0a 3c 68 32 3e 41 64 6a 75 73  .</p>..<h2>Adjus
0620: 74 69 6e 67 20 53 51 4c 69 74 65 20 54 6f 20 55  ting SQLite To U
0630: 73 65 20 38 2b 33 20 46 69 6c 65 6e 61 6d 65 73  se 8+3 Filenames
0640: 3c 2f 68 32 3e 0a 0a 3c 70 3e 0a 53 6f 6d 65 20  </h2>..<p>.Some 
0650: 64 65 76 69 63 65 73 20 61 72 65 20 63 6f 6d 70  devices are comp
0660: 65 6c 6c 65 64 20 74 6f 20 75 73 65 20 61 6e 20  elled to use an 
0670: 6f 6c 64 65 72 20 66 69 6c 65 73 79 73 74 65 6d  older filesystem
0680: 20 77 69 74 68 20 38 2b 33 0a 66 69 6c 65 6e 61   with 8+3.filena
0690: 6d 65 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20  me restrictions 
06a0: 66 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f  for backwards co
06b0: 6d 70 61 74 69 62 69 6c 69 74 79 2c 20 6f 72 20  mpatibility, or 
06c0: 64 75 65 0a 74 6f 20 6f 74 68 65 72 20 6e 6f 6e  due.to other non
06d0: 2d 74 65 63 68 6e 69 63 61 6c 20 66 61 63 74 6f  -technical facto
06e0: 72 73 2e 20 20 49 6e 20 73 75 63 68 20 73 69 74  rs.  In such sit
06f0: 75 61 74 69 6f 6e 73 2c 20 53 51 4c 69 74 65 20  uations, SQLite 
0700: 63 61 6e 20 62 65 0a 63 6f 65 72 63 65 64 20 69  can be.coerced i
0710: 6e 74 6f 20 75 73 69 6e 67 20 61 75 78 69 6c 69  nto using auxili
0720: 61 72 79 20 66 69 6c 65 73 20 74 68 61 74 20 66  ary files that f
0730: 69 74 20 74 68 65 20 38 2b 33 20 70 61 74 74 65  it the 8+3 patte
0740: 72 6e 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 3c  rn as follows:.<
0750: 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70  /p>..<ol>.<li><p
0760: 3e 43 6f 6d 70 69 6c 65 20 74 68 65 20 53 51 4c  >Compile the SQL
0770: 69 74 65 20 6c 69 62 72 61 72 79 20 77 69 74 68  ite library with
0780: 20 74 68 65 20 65 69 74 68 65 72 20 74 68 65 20   the either the 
0790: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 20 20 20  compile-time.   
07a0: 20 20 20 20 6f 70 74 69 6f 6e 73 20 5b 53 51 4c      options [SQL
07b0: 49 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e  ITE_ENABLE_8_3_N
07c0: 41 4d 45 53 7c 53 51 4c 49 54 45 5f 45 4e 41 42  AMES|SQLITE_ENAB
07d0: 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 31 5d 20  LE_8_3_NAMES=1] 
07e0: 6f 72 0a 20 20 20 20 20 20 20 5b 53 51 4c 49 54  or.       [SQLIT
07f0: 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d  E_ENABLE_8_3_NAM
0800: 45 53 7c 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  ES|SQLITE_ENABLE
0810: 5f 38 5f 33 5f 4e 41 4d 45 53 3d 32 5d 2e 0a 20  _8_3_NAMES=2].. 
0820: 20 20 20 20 20 20 53 75 70 70 6f 72 74 20 66 6f        Support fo
0830: 72 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20  r 8+3 filenames 
0840: 69 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20  is not included 
0850: 69 6e 20 53 51 4c 69 74 65 20 62 79 20 64 65 66  in SQLite by def
0860: 61 75 6c 74 0a 20 20 20 20 20 20 20 62 65 63 61  ault.       beca
0870: 75 73 65 20 69 74 20 64 6f 65 73 20 69 6e 74 72  use it does intr
0880: 6f 64 75 63 65 20 73 6f 6d 65 20 6f 76 65 72 68  oduce some overh
0890: 65 61 64 2e 20 20 54 68 65 20 6f 76 65 72 68 65  ead.  The overhe
08a0: 61 64 20 69 73 20 74 69 6e 79 2c 0a 20 20 20 20  ad is tiny,.    
08b0: 20 20 20 62 75 74 20 65 76 65 6e 20 73 6f 2c 20     but even so, 
08c0: 77 65 20 64 6f 20 6e 6f 74 20 77 61 6e 74 20 74  we do not want t
08d0: 6f 20 62 75 72 64 65 6e 20 74 68 65 20 62 69 6c  o burden the bil
08e0: 6c 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 0a  lions of SQLite.
08f0: 20 20 20 20 20 20 20 61 70 70 6c 69 63 61 74 69         applicati
0900: 6f 6e 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  ons that do not 
0910: 6e 65 65 64 20 38 2b 33 20 66 69 6c 65 6e 61 6d  need 8+3 filenam
0920: 65 20 73 75 70 70 6f 72 74 2e 3c 2f 70 3e 0a 0a  e support.</p>..
0930: 3c 6c 69 3e 3c 70 3e 49 66 20 74 68 65 20 5b 53  <li><p>If the [S
0940: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33  QLITE_ENABLE_8_3
0950: 5f 4e 41 4d 45 53 7c 53 51 4c 49 54 45 5f 45 4e  _NAMES|SQLITE_EN
0960: 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 31  ABLE_8_3_NAMES=1
0970: 5d 20 6f 70 74 69 6f 6e 0a 20 20 20 20 20 20 20  ] option.       
0980: 69 73 20 75 73 65 64 2c 20 74 68 65 6e 20 53 51  is used, then SQ
0990: 4c 69 74 65 20 69 73 20 63 61 70 61 62 6c 65 20  Lite is capable 
09a0: 6f 66 20 75 73 69 6e 67 20 38 2b 33 20 66 69 6c  of using 8+3 fil
09b0: 65 6e 61 6d 65 73 20 62 75 74 20 74 68 61 74 0a  enames but that.
09c0: 20 20 20 20 20 20 20 63 61 70 61 62 69 6c 69 74         capabilit
09d0: 69 65 73 20 69 73 20 64 69 73 61 62 6c 65 64 20  ies is disabled 
09e0: 61 6e 64 20 6d 75 73 74 20 62 65 20 65 6e 61 62  and must be enab
09f0: 6c 65 64 20 73 65 70 61 72 61 74 65 6c 79 20 66  led separately f
0a00: 6f 72 20 65 61 63 68 0a 20 20 20 20 20 20 20 64  or each.       d
0a10: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
0a20: 6f 6e 20 62 79 20 75 73 69 6e 67 0a 20 20 20 20  on by using.    
0a30: 20 20 20 75 73 69 6e 67 20 5b 55 52 49 20 66 69     using [URI fi
0a40: 6c 65 6e 61 6d 65 73 5d 20 77 68 65 6e 20 5b 73  lenames] when [s
0a50: 71 6c 69 74 65 33 5f 6f 70 65 6e 20 7c 20 6f 70  qlite3_open | op
0a60: 65 6e 69 6e 67 5d 20 6f 72 0a 20 20 20 20 20 20  ening] or.      
0a70: 20 5b 41 54 54 41 43 48 20 7c 20 41 54 54 41 43   [ATTACH | ATTAC
0a80: 48 2d 69 6e 67 5d 20 74 68 65 20 64 61 74 61 62  H-ing] the datab
0a90: 61 73 65 20 66 69 6c 65 73 20 61 6e 64 20 69 6e  ase files and in
0aa0: 63 6c 75 64 65 20 74 68 65 0a 20 20 20 20 20 20  clude the.      
0ab0: 20 22 3c 74 74 3e 38 5f 33 5f 6e 61 6d 65 73 3d   "<tt>8_3_names=
0ac0: 31 3c 2f 74 74 3e 22 20 71 75 65 72 79 20 70 61  1</tt>" query pa
0ad0: 72 61 6d 65 74 65 72 20 69 6e 20 74 68 65 20 55  rameter in the U
0ae0: 52 49 2e 20 20 49 66 20 53 51 4c 69 74 65 0a 20  RI.  If SQLite. 
0af0: 20 20 20 20 20 20 69 73 20 63 6f 6d 70 69 6c 65        is compile
0b00: 64 20 77 69 74 68 0a 20 20 20 20 20 20 20 5b 53  d with.       [S
0b10: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33  QLITE_ENABLE_8_3
0b20: 5f 4e 41 4d 45 53 7c 53 51 4c 49 54 45 5f 45 4e  _NAMES|SQLITE_EN
0b30: 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 32  ABLE_8_3_NAMES=2
0b40: 5d 20 74 68 65 6e 0a 20 20 20 20 20 20 20 38 2b  ] then.       8+
0b50: 33 20 66 69 6c 65 6e 61 6d 65 73 20 61 72 65 20  3 filenames are 
0b60: 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  enabled by defau
0b70: 6c 74 20 61 6e 64 20 74 68 69 73 20 73 74 65 70  lt and this step
0b80: 20 63 61 6e 20 62 65 0a 20 20 20 20 20 20 20 73   can be.       s
0b90: 6b 69 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 6c 69  kipped.</p>..<li
0ba0: 3e 3c 70 3e 4d 61 6b 65 20 73 75 72 65 20 74 68  ><p>Make sure th
0bb0: 61 74 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  at database file
0bc0: 6e 61 6d 65 73 20 66 6f 6c 6c 6f 77 20 74 68 65  names follow the
0bd0: 20 38 2b 33 20 66 69 6c 65 6e 61 6d 65 0a 20 20   8+3 filename.  
0be0: 20 20 20 20 20 66 6f 72 6d 61 74 20 61 6e 64 20       format and 
0bf0: 74 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f 74  that they do not
0c00: 20 68 61 76 65 20 61 6e 20 65 6d 70 74 79 20 6e   have an empty n
0c10: 61 6d 65 20 6f 72 20 65 78 74 65 6e 73 69 6f 6e  ame or extension
0c20: 2e 0a 20 20 20 20 20 20 20 49 6e 20 6f 74 68 65  ..       In othe
0c30: 72 20 77 6f 72 64 73 2c 20 74 68 65 20 64 61 74  r words, the dat
0c40: 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 6d  abase filename m
0c50: 75 73 74 20 63 6f 6e 74 61 69 6e 20 62 65 74 77  ust contain betw
0c60: 65 65 6e 0a 20 20 20 20 20 20 20 31 20 61 6e 64  een.       1 and
0c70: 20 38 20 63 68 61 72 61 63 74 65 72 73 20 69 6e   8 characters in
0c80: 20 74 68 65 20 62 61 73 65 20 6e 61 6d 65 20 61   the base name a
0c90: 6e 64 20 62 65 74 77 65 65 6e 20 31 20 61 6e 64  nd between 1 and
0ca0: 20 33 20 63 68 61 72 61 63 74 65 72 73 0a 20 20   3 characters.  
0cb0: 20 20 20 20 20 69 6e 20 74 68 65 20 65 78 74 65       in the exte
0cc0: 6e 73 69 6f 6e 2e 20 20 42 6c 61 6e 6b 20 65 78  nsion.  Blank ex
0cd0: 74 65 6e 73 69 6f 6e 73 20 61 72 65 20 6e 6f 74  tensions are not
0ce0: 20 61 6c 6c 6f 77 65 64 2e 3c 2f 70 3e 0a 3c 2f   allowed.</p>.</
0cf0: 6f 6c 3e 0a 0a 3c 70 3e 0a 57 68 65 6e 20 74 68  ol>..<p>.When th
0d00: 65 20 73 74 65 70 73 20 61 62 6f 76 65 20 61 72  e steps above ar
0d10: 65 20 75 73 65 64 2c 20 53 51 4c 69 74 65 20 77  e used, SQLite w
0d20: 69 6c 6c 20 73 68 6f 72 74 65 6e 20 66 69 6c 65  ill shorten file
0d30: 6e 61 6d 65 20 65 78 74 65 6e 73 69 6f 6e 73 0a  name extensions.
0d40: 62 79 20 6f 6e 6c 79 20 75 73 69 6e 67 20 74 68  by only using th
0d50: 65 20 6c 61 73 74 20 33 20 63 68 61 72 61 63 74  e last 3 charact
0d60: 65 72 73 20 6f 66 0a 74 68 65 20 65 78 74 65 6e  ers of.the exten
0d70: 73 69 6f 6e 2e 20 20 54 68 75 73 2c 20 66 6f 72  sion.  Thus, for
0d80: 20 65 78 61 6d 70 6c 65 2c 20 61 20 66 69 6c 65   example, a file
0d90: 20 74 68 61 74 20 77 6f 75 6c 64 20 6e 6f 72 6d   that would norm
0da0: 61 6c 6c 79 20 62 65 20 63 61 6c 6c 65 64 0a 22  ally be called."
0db0: 3c 74 74 3e 61 70 70 2e 64 62 2d 6a 6f 75 72 6e  <tt>app.db-journ
0dc0: 61 6c 3c 2f 74 74 3e 22 20 69 73 20 73 68 6f 72  al</tt>" is shor
0dd0: 74 65 6e 65 64 20 74 6f 20 6a 75 73 74 20 22 3c  tened to just "<
0de0: 74 74 3e 61 70 70 2e 6e 61 6c 3c 2f 74 74 3e 22  tt>app.nal</tt>"
0df0: 2e 0a 53 69 6d 69 6c 61 72 6c 79 2c 20 22 3c 74  ..Similarly, "<t
0e00: 74 3e 61 70 70 2e 64 62 2d 77 61 6c 3c 2f 74 74  t>app.db-wal</tt
0e10: 3e 22 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 22  >" will become "
0e20: 3c 74 74 3e 61 70 70 2e 77 61 6c 3c 2f 74 74 3e  <tt>app.wal</tt>
0e30: 22 20 61 6e 64 0a 22 3c 74 74 3e 61 70 70 2e 64  " and."<tt>app.d
0e40: 62 2d 73 68 6d 3c 2f 74 74 3e 22 20 62 65 63 6f  b-shm</tt>" beco
0e50: 6d 65 73 20 22 3c 74 74 3e 61 70 70 2e 73 68 6d  mes "<tt>app.shm
0e60: 3c 2f 74 74 3e 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70  </tt>"..</p>..<p
0e70: 3e 0a 4e 6f 74 65 20 74 68 61 74 20 69 74 20 69  >.Note that it i
0e80: 73 20 76 65 72 79 20 69 6d 70 6f 72 74 61 6e 74  s very important
0e90: 20 74 68 61 74 20 74 68 65 20 64 61 74 61 62 61   that the databa
0ea0: 73 65 20 66 69 6c 65 6e 61 6d 65 20 68 61 76 65  se filename have
0eb0: 20 73 6f 6d 65 20 6b 69 6e 64 0a 6f 66 20 65 78   some kind.of ex
0ec0: 74 65 6e 73 69 6f 6e 2e 20 20 49 66 20 74 68 65  tension.  If the
0ed0: 72 65 20 69 73 20 6e 6f 20 65 78 74 65 6e 73 69  re is no extensi
0ee0: 6f 6e 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  on, then SQLite 
0ef0: 63 72 65 61 74 65 73 20 61 75 78 69 6c 69 61 72  creates auxiliar
0f00: 79 0a 66 69 6c 65 6e 61 6d 65 73 20 62 79 20 61  y.filenames by a
0f10: 70 70 65 6e 64 69 6e 67 20 74 6f 20 74 68 65 20  ppending to the 
0f20: 62 61 73 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  base name of the
0f30: 20 66 69 6c 65 2e 20 20 54 68 75 73 2c 20 61 20   file.  Thus, a 
0f40: 64 61 74 61 62 61 73 65 0a 6e 61 6d 65 64 20 22  database.named "
0f50: 3c 74 74 3e 64 62 30 31 3c 2f 74 74 3e 22 20 77  <tt>db01</tt>" w
0f60: 6f 75 6c 64 20 68 61 76 65 20 61 20 5b 72 6f 6c  ould have a [rol
0f70: 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 66  lback journal] f
0f80: 69 6c 65 20 6e 61 6d 65 64 0a 22 3c 74 74 3e 64  ile named."<tt>d
0f90: 62 30 31 2d 6a 6f 75 72 6e 61 6c 3c 2f 74 74 3e  b01-journal</tt>
0fa0: 22 2e 20 20 41 6e 64 20 61 73 20 74 68 69 73 20  ".  And as this 
0fb0: 66 69 6c 65 6e 61 6d 65 20 68 61 73 20 6e 6f 20  filename has no 
0fc0: 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 73 68 6f  extension to sho
0fd0: 72 74 65 6e 0a 74 6f 20 33 20 63 68 61 72 61 63  rten.to 3 charac
0fe0: 74 65 72 73 2c 20 69 74 20 77 69 6c 6c 20 62 65  ters, it will be
0ff0: 20 75 73 65 64 20 61 73 2d 69 73 2c 20 61 6e 64   used as-is, and
1000: 20 77 69 6c 6c 20 76 69 6f 6c 61 74 65 20 38 2b   will violate 8+
1010: 33 20 6e 61 6d 69 6e 67 20 72 75 6c 65 73 2e 0a  3 naming rules..
1020: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
1030: 61 67 6d 65 6e 74 20 64 62 38 33 63 6f 72 72 75  agment db83corru
1040: 70 74 20 5c 0a 20 20 20 7b 64 61 74 61 62 61 73  pt \.   {databas
1050: 65 20 63 6f 72 72 75 70 74 69 6f 6e 20 63 61 75  e corruption cau
1060: 73 65 64 20 62 79 20 69 6e 63 6f 6e 73 69 73 74  sed by inconsist
1070: 65 6e 74 20 75 73 65 20 6f 66 20 38 2b 33 20 66  ent use of 8+3 f
1080: 69 6c 65 6e 61 6d 65 73 7d 0a 3c 2f 74 63 6c 3e  ilenames}.</tcl>
1090: 0a 3c 68 32 3e 44 61 74 61 62 61 73 65 20 43 6f  .<h2>Database Co
10a0: 72 72 75 70 74 69 6f 6e 20 57 61 72 6e 69 6e 67  rruption Warning
10b0: 3c 2f 68 32 3e 0a 0a 3c 70 3e 0a 49 66 20 61 20  </h2>..<p>.If a 
10c0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69 73  database file is
10d0: 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 20   accessed using 
10e0: 38 2b 33 20 6e 61 6d 69 6e 67 20 72 61 74 68 65  8+3 naming rathe
10f0: 72 20 74 68 61 6e 20 74 68 65 20 64 65 66 61 75  r than the defau
1100: 6c 74 0a 6c 6f 6e 67 20 66 69 6c 65 6e 61 6d 65  lt.long filename
1110: 2c 20 74 68 65 6e 20 69 74 20 6d 75 73 74 20 62  , then it must b
1120: 65 20 63 6f 6e 73 69 73 74 65 6e 74 6c 79 20 61  e consistently a
1130: 63 63 65 73 73 65 64 20 0a 75 73 69 6e 67 20 38  ccessed .using 8
1140: 2b 33 20 6e 61 6d 69 6e 67 20 62 79 20 65 76 65  +3 naming by eve
1150: 72 79 20 64 61 74 61 62 61 73 65 0a 63 6f 6e 6e  ry database.conn
1160: 65 63 74 69 6f 6e 20 65 76 65 72 79 20 74 69 6d  ection every tim
1170: 65 20 69 74 20 69 73 20 6f 70 65 6e 65 64 2c 20  e it is opened, 
1180: 6f 72 20 65 6c 73 65 20 74 68 65 72 65 20 69 73  or else there is
1190: 20 61 20 72 69 73 6b 20 6f 66 20 64 61 74 61 62   a risk of datab
11a0: 61 73 65 0a 63 6f 72 72 75 70 74 69 6f 6e 2e 0a  ase.corruption..
11b0: 54 68 65 20 61 75 78 69 6c 69 61 72 79 20 5b 72  The auxiliary [r
11c0: 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d  ollback journal]
11d0: 20 61 6e 64 20 5b 77 72 69 74 65 2d 61 68 65 61   and [write-ahea
11e0: 64 20 6c 6f 67 5d 20 66 69 6c 65 73 20 61 72 65  d log] files are
11f0: 20 65 73 73 65 6e 74 69 61 6c 0a 74 6f 20 53 51   essential.to SQ
1200: 4c 69 74 65 20 66 6f 72 20 62 65 69 6e 67 20 61  Lite for being a
1210: 62 6f 75 74 20 74 6f 20 72 65 63 6f 76 65 72 20  bout to recover 
1220: 66 72 6f 6d 20 61 20 63 72 61 73 68 2e 20 20 49  from a crash.  I
1230: 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
1240: 20 69 73 0a 75 73 69 6e 67 20 38 2b 33 20 6e 61   is.using 8+3 na
1250: 6d 65 73 20 61 6e 64 20 63 72 61 73 68 65 73 2c  mes and crashes,
1260: 20 74 68 65 6e 20 74 68 65 20 69 6e 66 6f 72 6d   then the inform
1270: 61 74 69 6f 6e 20 6e 65 65 64 65 64 20 74 6f 20  ation needed to 
1280: 73 61 66 65 6c 79 20 72 65 63 6f 76 65 72 0a 66  safely recover.f
1290: 72 6f 6d 20 74 68 65 20 63 72 61 73 68 20 69 73  rom the crash is
12a0: 20 73 74 6f 72 65 64 20 69 6e 20 66 69 6c 65 73   stored in files
12b0: 20 77 69 74 68 20 74 68 65 20 22 3c 74 74 3e 2e   with the "<tt>.
12c0: 6e 61 6c 3c 2f 74 74 3e 22 20 6f 72 0a 22 3c 74  nal</tt>" or."<t
12d0: 74 3e 2e 77 61 6c 3c 2f 74 74 3e 22 20 65 78 74  t>.wal</tt>" ext
12e0: 65 6e 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20  ension.  If the 
12f0: 6e 65 78 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  next application
1300: 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 64 61 74   to open the dat
1310: 61 62 61 73 65 0a 64 6f 65 73 20 6e 6f 74 20 73  abase.does not s
1320: 70 65 63 69 66 79 20 74 68 65 20 22 3c 74 74 3e  pecify the "<tt>
1330: 38 5f 33 5f 6e 61 6d 65 73 3d 31 3c 2f 74 74 3e  8_3_names=1</tt>
1340: 22 20 55 52 49 20 70 61 72 61 6d 65 74 65 72 2c  " URI parameter,
1350: 20 74 68 65 6e 20 53 51 4c 69 74 65 0a 77 69 6c   then SQLite.wil
1360: 6c 20 75 73 65 20 74 68 65 20 6c 6f 6e 67 20 66  l use the long f
1370: 69 6c 65 6e 61 6d 65 73 20 74 6f 20 74 72 79 20  ilenames to try 
1380: 74 6f 20 6c 6f 63 61 74 65 20 74 68 65 20 72 6f  to locate the ro
1390: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 6f  llback journal o
13a0: 72 0a 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f  r.write-ahead lo
13b0: 67 20 66 69 6c 65 73 2e 20 20 49 74 20 77 69 6c  g files.  It wil
13c0: 6c 20 6e 6f 74 20 66 69 6e 64 20 74 68 65 6d 2c  l not find them,
13d0: 20 73 69 6e 63 65 20 74 68 65 79 20 77 65 72 65   since they were
13e0: 20 73 61 76 65 64 20 75 73 69 6e 67 0a 38 2b 33   saved using.8+3
13f0: 20 6e 61 6d 65 73 20 62 79 20 74 68 65 20 61 70   names by the ap
1400: 70 6c 69 63 61 74 69 6f 6e 20 74 68 61 74 20 63  plication that c
1410: 72 61 73 68 65 64 2c 20 61 6e 64 20 68 65 6e 63  rashed, and henc
1420: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 77  e the database w
1430: 69 6c 6c 20 6e 6f 74 0a 62 65 20 70 72 6f 70 65  ill not.be prope
1440: 72 6c 79 20 72 65 63 6f 76 65 72 65 64 20 61 6e  rly recovered an
1450: 64 20 77 69 6c 6c 20 6c 69 6b 65 6c 79 20 67 6f  d will likely go
1460: 20 63 6f 72 72 75 70 74 2e 0a 3c 2f 70 3e 0a 0a   corrupt..</p>..
1470: 3c 70 3e 0a 55 73 69 6e 67 20 61 20 64 61 74 61  <p>.Using a data
1480: 62 61 73 65 20 66 69 6c 65 20 77 69 74 68 20 38  base file with 8
1490: 2b 33 20 66 69 6c 65 6e 61 6d 65 73 20 69 6e 20  +3 filenames in 
14a0: 73 6f 6d 65 20 63 61 73 65 73 20 77 68 69 6c 65  some cases while
14b0: 20 69 6e 20 0a 6f 74 68 65 72 20 63 61 73 65 73   in .other cases
14c0: 20 75 73 69 6e 67 20 6c 6f 6e 67 20 66 69 6c 65   using long file
14d0: 6e 61 6d 65 73 20 69 73 20 65 71 75 69 76 61 6c  names is equival
14e0: 65 6e 74 20 74 6f 0a 5b 64 65 6c 65 74 69 6e 67  ent to.[deleting
14f0: 20 61 20 68 6f 74 20 6a 6f 75 72 6e 61 6c 5d 2e   a hot journal].
1500: 0a 3c 2f 70 3e 0a                                .</p>.