Android Studio 3.0金丝雀1:SQL语法错误
从Android Studio 2.3升级到Android Studio 3.0 canary 1后,我遇到了一个问题Android Studio 3.0金丝雀1:SQL语法错误,android,android-studio,android-sqlite,Android,Android Studio,Android Sqlite,从Android Studio 2.3升级到Android Studio 3.0 canary 1后,我遇到了一个问题 db.execSQL("CREATE TABLE IF NOT EXISTS " + Contract.COUNTRY_PATH + " (" + Contract.Country._ID + " INTEGER AUTO INCREMENT , " + Contract.Country.COLUMN_CITY_I
db.execSQL("CREATE TABLE IF NOT EXISTS " + Contract.COUNTRY_PATH + " (" +
Contract.Country._ID + " INTEGER AUTO INCREMENT , " +
Contract.Country.COLUMN_CITY_ID + " INTEGER PRIMARY KEY," +
Contract.Country.COLUMN_COUNTRY_NAME + " TEXT," +
Contract.Country.COLUMN_SUNRISE + " INTEGER," +
Contract.Country.COLUMN_SUNSET + " INTEGER) ");
它显示了一个错误
'(',')',<column constraint> or comma expected ,got 'AUTO'
“(”、“)”或应为逗号,但获得了“自动”
Android Studio 2.3还不错。
任何建议。
谢谢。请勿在您的列名中添加空格
我正在使用Android Studio 3.0 beta7。同样的问题仍然存在。Android Studio 3中的SQL语法检查器比sqlite本身更严格 sqlite本身中的
INTEGER AUTO INCREMENT
基本上只会生成一个具有整数相关性的列。输入错误的自动递增
只是噪音。这就是为什么它会在Studio中被标记,但不会在sqlite中导致语法错误
如果需要自动递增列,请将其设为
INTEGER主键
。如果确实需要避免rowid重用,那么列应该是INTEGER主键AUTOINCREMENT
。请注意,表中只能有一个主键列。另请参见:您是否尝试过使用自动增量
?(“u”而不是空白)是的,同样的问题。添加NOT NULL
约束如何?不幸的是,同样的问题。很可能是一个bug,它的预览版本/你能再解释一下吗?
CREATE TABLE yourtablename (id INTEGER primary key autoincrement NOT NULL, name TEXT, description TEXT, expValue INTEGER, category INTEGER NOT NULL REFERENCES categories (id), date TEXT)