在update语句中启用限制-sqlite

kokeuurv  于 2023-03-03  发布在  SQLite
关注(0)|答案(3)|浏览(175)

我在使用sqlite时遇到了问题,因为我需要在UPDATE语句中使用LIMIT。我使用以下命令编译了sqlite:

wget http://sqlite.org/2016/sqlite-autoconf-3140100.tar.gz 
tar zxf sqlite-autoconf-3140100.tar.gz 
cd sqlite-autoconf-3140100 
./configure --prefix=/usr --disable-static CFLAGS="-g -O2 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1"
make
make install

当我检查是否使用编译选项时,结果是1,但是当我执行带有限制的更新语句时,我得到了错误

sqlite>  select sqlite_compileoption_used('SQLITE_ENABLE_UPDATE_DELETE_LIMIT');
1
sqlite> UPDATE table_name SET modified_at = date('now') WHERE id = 11 LIMIT 1;
Error: near "LIMIT": syntax error

我错过了什么吗?我找不到解决办法。每个答案都很感激。
我正在编译的sqlite的码头集装箱FROM php:5. 6-apache

nr7wwzry

nr7wwzry1#

文档中写道:
如果定义了此选项,则在使用"lemon"工具生成parse. c文件时也必须定义此选项。因此,此选项只能在从源代码构建库时使用,而不是从合并构建库时使用。
所以你必须建立自己的合并。

kuhbmx9i

kuhbmx9i2#

这对我很有效(MacOS):

STEM=sqlite-src-3410000
FILE=$STEM.zip

if [ -d $STEM ]; then
  echo Folder $STEM exists.
else
  if [ -f $FILE ]; then
    echo File $FILE exists.
  else
    wget https://www.sqlite.org/$(date +'%Y')/$FILE
  fi
  unzip $FILE
fi

cd $STEM && \
./configure --prefix=/usr/local --disable-static --enable-update-limit && \
make sqlite3.c && \
make install && \
echo Done.

验证:

$ /usr/local/bin/sqlite3 --version
3.41.0 2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d
aelbi1ox

aelbi1ox3#

如果有人有同样的问题,我这样编译sqlite

wget https://www.sqlite.org/2016/sqlite-src-3140100.zip 
unzip sqlite-src-3140100.zip && cd sqlite-src-3140100 
./configure --prefix=/usr --disable-static CFLAGS="-g -O2 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1" 
make sqlite3.c 
make install

相关问题