Android Studio 3.0金丝雀1:SQL语法错误

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

从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_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)