sqlite3をcygwinにインストール(使用できる列数をふやす)

sqlite3はVersion 3.8.9.
sqlite3は2000列しかデフォルトでは最大使えないので、
それを増やす。

エラーコード

`initialize': malformed database schema (TABLENAME) - too many columns on normalized_freq_time_series (SQLite3::CorruptException)


増やすためにはソースからのコンパイルが必要。
(1)ソースの取得

554 wget http://www.sqlite.org/2015/sqlite-autoconf-3080900.tar.gz
555 gzip -d http://www.sqlite.org/2015/sqlite-autoconf-3080900.tar.gz
556 gzip -d sqlite-autoconf-3080900.tar.gz
557 tar -xvf sqlite-autoconf-3080900.tar
558 cd sqlite*
559 ls

https://www.sqlite.org/limits.html#max_column
を参照するとSQLIETE_MAX_COLUMNという変数の設定をかえればいいらしいが、どこをかえていいのかわからない。
そこで、

find /. -type f -print | xargs grep MAX_COLUMN

と検索することで、sqlite3.c

8021
8022
8023 #ifndef SQLITE_MAX_COLUMN
8024 # define SQLITE_MAX_COLUMN 2000
8025 #endif

という部分を発見、マクロを変えればいいといことで、

./configureで

./configure CFLAGS='-DSQLITE_MAX_COLUMN=10000' CPPFLAGS='-DSQLITE_MAX_COLUMN=10000'

とすればよい.Dはマクロを臨時に指定できる.以下は10000列に設定を変えている.
CFLAGSはC言語コンパイルオプションを指定,CPPFLAGSはC++言語のコンパイルオプションを指定.
http://www.unixuser.org/~euske/doc/gccopts/

だめならこのオプション

./configure CFLAGS='-DSQLITE_MAX_COLUMN=10000' CPPFLAGS='-DSQLITE_MAX_COLUMN=10000' -disable-dynamic-extensions --enable-static --disable-shared

再ログインなど

ここまでできれば

make clean
make
make install

でOK.


こういうエラーが出る場合は…
SQLite header and source version mismatch
2009-11-04 13:30:02 eb7a544fe49d1626bacecfe53ddc03fe082e3243
2015-04-08 12:16:33 8a8ffc862e96f57aa698f93de10dee28e69f6e09

/usr/include/sqlite3.hを消して再びmakeすると動く模様
http://yoshikiito-el.hatenablog.com/entry/2014/11/24/121144 

ruby-sqlite3等は一度アンイントールしておく

LIBS = -lsqlite3 -lpthread -lrt -ldl -lcrypt -lm -lc

LIBS = -l/usr/local/sqlite3 -lpthread -lrt -ldl -lcrypt -lm -lc

ruby-sqlite3 は、
ldd sqlite3_native.so
として、
libsqlite3.so.0 => /usr/lib64/libsqlite3.so.0 (0x00007f2864f7e000)
なる.
ここで、usr/lib64/libsqlite3.so.0 をコンパイルしたものに置き換えると通る.