【问题标题】:Error in Foreign key外键错误
【发布时间】:2014-12-07 21:39:00
【问题描述】:
  1. 如果用户不存在则创建表(id INTEGER PRIMARY KEY,uname TEXT,fname TEXT,lname TEXT,pwd TEXT,mailid TEXT)
  2. CREATE TABLE IF NOT EXISTS group(groupid INTEGER PRIMARY KEY,groupname TEXT,userid INTEGER,groupdate TEXT,groupdescription TEXT,groupnote TEXT, FOREIGN KEY (userid) REFERENCES users(id))

程序

private static final String TABLE_USERS = "users";
private static final String TABLE_GROUP = "group";

// user Table Columns names

private static final String KEY_ID = "id";
private static final String KEY_USERNAME = "uname";
private static final String KEY_FIRSTNAME = "fname";
private static final String KEY_LASTNAME = "lname";
private static final String KEY_PASSWORD = "pwd";
private static final String KEY_EMAILID = "mailid";

// group Table Columns names

private static final String KEY_GPID = "groupid";
private static final String KEY_GNAME = "groupname";
private static final String KEY_GUSERID = "userid";
private static final String KEY_GDATE = "groupdate";
private static final String KEY_GDESCRIPTION = "groupdescription";
private static final String KEY_GNOTE = "groupnote";

private static final String TYPE_TEXT = " TEXT";
private static final String TYPE_INTEGER = " INTEGER";
private static final String TYPE_REAL = " REAL";
private static final String COMMA_SEP = ",";
private static final String REFER  = " REFERENCES ";
private static final String FOREIGN  = " FOREIGN KEY ";
private static final String LEFT_BRACKET  = "(";
private static final String RIGHT_BRACKET  = ")";


String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_USERS + LEFT_BRACKET 
            + KEY_ID+ " INTEGER PRIMARY KEY," 
            + KEY_USERNAME + TYPE_TEXT+ COMMA_SEP 
            + KEY_FIRSTNAME + TYPE_TEXT + COMMA_SEP
            + KEY_LASTNAME + TYPE_TEXT + COMMA_SEP 
            + KEY_PASSWORD+ TYPE_TEXT + COMMA_SEP 
            + KEY_EMAILID + TYPE_TEXT + RIGHT_BRACKET;


String CREATE_GROUP_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_GROUP + LEFT_BRACKET
            + KEY_GPID+ " INTEGER PRIMARY KEY," 
            + KEY_GNAME + TYPE_TEXT+ COMMA_SEP
            + KEY_GUSERID+ TYPE_INTEGER +COMMA_SEP
            + KEY_GDATE + TYPE_TEXT+ COMMA_SEP
            + KEY_GDESCRIPTION + TYPE_TEXT + COMMA_SEP 
            + KEY_GNOTE+ TYPE_TEXT +COMMA_SEP
            +FOREIGN+LEFT_BRACKET+KEY_GUSERID+RIGHT_BRACKET+REFER+TABLE_USERS+LEFT_BRACKET+KEY_ID+RIGHT_BRACKET+ RIGHT_BRACKET;

try
{
    db.execSQL(CREATE_USER_TABLE);
    db.execSQL(CREATE_GROUP_TABLE);
}
catch(SQLiteException e)
{
    e.printStackTrace();
}

例外

android.database.sqlite.SQLiteException:靠近“组”:语法错误(代码 1):,编译时:CREATE TABLE IF NOT EXISTS group(groupid INTEGER PRIMARY KEY,groupname TEXT,userid INTEGER,groupdate TEXT ,groupdescription TEXT,groupnote TEXT, FOREIGN KEY (userid) REFERENCES users(id))

请告诉我这个 pbm 的解决方案是什么?????? pbm是什么?????? 为什么会发生???????

【问题讨论】:

  • 在“组”后面加一个空格
  • users 表也没有放置空间,但它工作正常............那么你需要组表空间......

标签: sql-server database foreign-keys


【解决方案1】:

试试这个方法,希望能帮助你解决问题。

'group' 和 'GROUP' 是 SQL / SQLite 中的关键字,因此您可以更改表名或在组表名关键字周围添加双引号,例如:

CREATE TABLE IF NOT EXISTS "group"(groupid INTEGER PRIMARY KEY,groupname TEXT,userid INTEGER,groupdate TEXT,groupdescription TEXT,groupnote TEXT, FOREIGN KEY (userid) REFERENCES users(id))

【讨论】:

    【解决方案2】:

    GROUP 是 SQL 中的关键字。重命名表格或将其放入"double quotes"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2011-06-12
      相关资源
      最近更新 更多