[O]SQLite数据库报错:no such column

在SQLite数据库创建语句增加列,运行后报错:no such column

在语法规范的前提下,即

//SQLite数据库创建,逗号与空格须严格
String CREATE_NOTE = "create table "
			+ NotepadEntity.TABLE_NOTE
			+ " (" + NotepadEntity.NOTE_ID + " integer primary key autoincrement,"
			+ NotepadEntity.NOTE_TITLE + " varchar not null," //此列为修改语句后增加
			+ NotepadEntity.NOTE_CONTENT + " text not null,"
			+ NotepadEntity.NOTE_CREATE_DATE + " text);";

SQLiteDatabase db;
db.execSQL(CREATE_NOTE);

仍无法编译通过,其原因是SQLite创建命令执行过一次,数据库文件已存在,即使语句有变更,也没有再执行。

解决办法:

打开DDMS工具找到“File  Explorer”,定位到项目文件里的数据库文件列表(展开到/data/data/<package name>/databases)

(可将数据库文件导出电脑,用SQLite Database Browser等工具查看是否有列数据未创建)

删除该数据库文件及其journal文件,返回工程再次运行,程序检测到数据库为空,则执行创建命令,编译通过。

此时再导出DDMS下的数据库文件,查看列表结构,新增列创建成功,问题解决。

时间: 2024-08-24 05:29:26

[O]SQLite数据库报错:no such column的相关文章

mysql 保存emoji时报,数据库报错:Caused by: java.sql.SQLException: Incorrect string value: &#39;\xF0\x9F\x98\x82\xF0\x9F...&#39; for column &#39;review&#39; at row 1

错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智能手机输入法中的表情.那为什么会报错呢?因为mysql中的utf-8并不是真正意义上的utf-8,它只能存储1~3个字节长度的utf-8编码,如果想存储4个字节的必须用utf8mb4类型.不而要使用utf8mb4类型,首先要保证Mysql版本要不低于 MySQL 5.5.3. 常用

java保存报错解决for column &#39;name&#39; at r

Incorrect string value: '\xE6\x98\xAF\xE6\xBB\xB4...' for column 'name' at r 修改数据库的编码 ALTER DATABASE test CHARACTER SET utf8 ALTER TABLE hobby CONVERT TO CHARACTER SET utf8 ALTER TABLE person CONVERT TO CHARACTER SET utf8 java保存报错解决for column 'name'

MySql 插入数据库报错 Incorrect string value: &#39;\xF0\xA0\x86\xA2&#39;

今天从nginx日志分析搜索关键字,然后把关键字插入到Mysql数据库里,出现如下错误 SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\xA0\x86\xA2' for column 'XXXX' at row 38; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\xA0\x86\xA2' for column

Emoji表情符号录入MySQL数据库报错的解决方案

前言:手机app应用评论的时候,恢复表情符号,提示失败.?1,查看tomcat后台日志,核心报错信息如下:  Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)at com.mysql.

Python - - MySQL数据库 - - 报错锦集

注:环境配置信息,系统环境CentOS 7.4,数据库版本 mysql-5.7.24 1,跳过授权表 # 在命令行跳过授权表命令 mysqld_safe --skip-grant-tables & # 在 my.cnf 文件配置跳过授权表命令 [mysqld] skip-grant-tables 2,更改root密码 # 方法一: update mysql.user set authentication_string=password('root') where user='root' and

oracle 11g 手动删除表空间文件导致数据库报错处理方法

简单说下原因:当时图方便没进数据库,直接在datafile目录下删除了表空间对应的数据文件 导致后来数据库报错,并且不能删除表空间 错误如下:ORA-01116:error in opening database ****ORA-01110:data file 54:'/home3/datafile/arrange/NewArrange.dbf'ORA-27041:unable to open fileLinux Error:2: No Such file or directoryAdditio

修改mysql存储引擎备份数据库报错及解决方案

备份数据库报错 原因:由于监控服务器最近cpu负载比较高.(cpu4核心,负载2.7左右)感觉很奇怪,因为别的服务器mysql占用的资源并不多,因此我首先优化了数据库的配置文件.cpu稍微下降了一点,但是没有特别明显的变化. 于是,从mysql的存储引擎和日志考虑,结果发现默认用的引擎是myisam.好吧.换成innodb,(由于事先我没备份,就在配置文件修改了引擎,因为日志除了二进制其他并没有开启.所以没动它.重启数据库. ok 早就听说这两个引擎,区别,看来性能差别真大啊! 好吧.备份数据库

远程登录oracle 12.2数据库报错ORA-28040解决办法

今天新安装的oracle 12.2.0.1数据库,通过本地sqlplus远程登录12c数据库报错ora-28040,如下: ORA-28040: No matching authentication protocol 解决办法(亲测可行): 进入到$ORACLE_HOME/network/admin下,编辑sqlnet.ora文件(如果不存在,则创建一个,或者去samples目录下复制一份),在末尾添加下面一行,不需要重新启动数据库及监听,再次通过本地sqlplus访问远程12c数据库,登录成功

dbstart和dbshut启动、关闭数据库报错ORACLE_HOME_LISTNER is not SET解决办法

dbstart启动数据库报错,如下: [[email protected] ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net ListenerUsage: /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart ORACLE_HOME dbshut关闭数据库报错,如下: [[email protected] ~]$ dbshutORACLE_HOME