我需要修改SQLite数据库中的一个列,但是由于数据库已经在生产,所以我必须通过编程进行修改。从我的研究中,我发现,为了做到这一点,我必须做以下几点。
对于一些应该相对容易的事情来说,这似乎是一项荒谬的工作。难道没有更简单的方法吗?我所需要做的就是更改现有列上的约束,并给它一个默认值。
发布于 2010-04-21 19:20:20
这是众所周知的SQLite的缺点之一(ALTER TABLE上不支持MODIFY COLUMN ),但在SQLite没有实现的SQL特性列表上是这样的。
编辑:当页面被更新时,提到的删除位可能在以后的版本中得到支持,以表明不再是这种情况。
发布于 2012-04-30 14:50:43
如果修改不太大(例如更改varchar的长度),则可以转储db,手动编辑数据库定义并再次导入:
echo '.dump' | sqlite3 test.db > test.dump然后使用文本编辑器打开文件,搜索要修改的定义,然后:
cat test.dump | sqlite3 new-test.db发布于 2010-04-21 19:19:50
正如这里所说,这些特性不是由SQLite实现的。
另外,您可以使用带有select的create进行第一步:
CREATE TABLE tmp_table AS SELECT id, name FROM src_tablehttps://stackoverflow.com/questions/2685885
复制相似问题