用SQLiteManager在表结构页面做添加列,修改主键,索引,修改默认值一些修改SQLite表结构的操作的时候.不能对表格本有的一些其它信息进行保存。比如主键信息,默认值信息,自动增长等信息都会丢失,因而导致数据插不进去,如果没有及时发现问题,继续操作,甚至会导致数据的损坏。
本文强烈建议,在进行没有把握或者数据表结构变动等动作比较大的的操作的时候,请先备份数据库。难免造成难以挽回的损失。
本文的解决跟前面的对SQLiteManager的中文问题的解决不同,本文没有提供程序上的BUG修复。一是时间上的问题,二是SQLiteManager又发布了新版,我不可能跟在其后来修改程序,我把问题已经提交给了SQLiteManager原作者,希望他能给我们一个很好的解决方案。
本文的方法可以为修改数据表结构提供参考,也可以为对表结构已经损坏(如默认字段丢失,主键丢失,自动增长字段信息丢失)等的数据来进行修复。
方法是用MySQL 的SQL语言格式来新写一个新建表格的查询,生成原有的表结构信息,并加上你想要的字段和关系,MySQL的工具支持比较多(EMS MySQL Manager,PhpMyAdmin都是有名的工具,很好用,功能也很强大),而且SQL语句功能也更加强大,而又能获得SQLiteManager的支持。
示范如下:
CREATE TABLE `lm_content` (
`id` int(10) NOT NULL auto_increment,
`title` varchar(100) NOT NULL default '',
`title_alias` varchar(100) NOT NULL default '',
`introtext` text,
`bodytext` text,
`sectionid` int(11) NOT NULL default '0',
`mask` int(11) NOT NULL default '0',
`catid` int(11) NOT NULL default '0',
`created` varchar(20) NOT NULL default '',
`modified` varchar(20) NOT NULL default '',
`created_by` int(11) NOT NULL default '0',
`created_by_alias` varchar(100) NOT NULL default '',
`published` int(1) NOT NULL default '0',
`frontpage` int(1) NOT NULL default '0',
`ordering` int(11) default NULL,
`metakey` text,
`metadesc` text,
`access` int(11) NOT NULL default '0',
`hits` int(11) NOT NULL default '0',
`image` varchar(100) default NULL,
`image_position` varchar(10) default NULL,
`recorank` int(11) default NULL,
PRIMARY KEY (`id`)
)
SQLiteManager能很好地支持MySQL 的SQL语句。最好不要用SQLiteManager 来新建表格,因为有些信息,如自动增长字段的信息没法设置。然后通过SQLiteManager的Operation下面的复制数据(注意只复制数据,不复制结构!)一项,把原来的数据复制到新表中。
然后确定数据复制成功,表结构无误后,就将原来的表格删除,再将新建好的表格重命名为原来表格的名字,命名操作也在选中表格后的Operation下。
这个小技巧就介绍完了,我的感想是如果能多学点东西,并融会贯通地使用,会为你的工作带来极大的方便!
(阅读次数:)