SQL语法错误?
有人知道下面的SQL查询有什么问题吗SQL语法错误?,sql,syntax,phpmyadmin,mysql,Sql,Syntax,Phpmyadmin,Mysql,有人知道下面的SQL查询有什么问题吗 CREATE TABLE IF NOT EXISTS PrWorlds ( # World table worldid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, worldname VARCHAR(32) NOT NULL UNIQUE # Name of world ); CREATE TABLE IF NOT EXISTS
CREATE TABLE IF NOT EXISTS PrWorlds ( # World table
worldid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
worldname VARCHAR(32) NOT NULL UNIQUE # Name of world
);
CREATE TABLE IF NOT EXISTS PrEntries ( # User/Group table
entryid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL, # Name of user/group
worldid INTEGER NOT NULL, # ID of the world the user/group belongs to
type TINYINT NOT NULL, # Type denotes the entry type. 0 for a user, 1 for a group
CONSTRAINT NameWorld UNIQUE (name, worldid, type),
ENTRYINDEX
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrPermissions ( # Table of permission nodes
permid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
permstring VARCHAR(64) NOT NULL, # Permission node
entryid INTEGER NOT NULL, # Entry whom this node belongs to
CONSTRAINT PrEntryPerm UNIQUE (entryid, permstring),
FOREIGN KEY(entryid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrInheritance ( # Table of parent-child relationships
uinheritid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
childid INTEGER NOT NULL, # Child entry
parentid INTEGER NOT NULL, # Parent entry
parentorder INTEGER NOT NULL, # Denotes order of inheritance.
# Groups override other groups' permissions/data
# below them in the results
CONSTRAINT PrParent UNIQUE (childid, parentid),
CONSTRAINT PrOrderedInheritance UNIQUE (childid, parentorder),
CONSTRAINT PrNoSelfInherit CHECK (childid <> parentid),
FOREIGN KEY(childid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(parentid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrWorldBase ( # Table of the default groups in that world
worldid INTEGER NOT NULL,
defaultid INTEGER, # Default group
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(defaultid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrData (
dataid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
entryid INTEGER NOT NULL , # ID entry whom this data node belongs to
path VARCHAR(64) NOT NULL, # Path to data node (e.g. "prefix", "build")
data VARCHAR(64) NOT NULL, # Data node in string form (o.toString())
CONSTRAINT PrDataUnique UNIQUE (entryid, path),
FOREIGN KEY(entryid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrTracks (
trackid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
trackname VARCHAR(64) NOT NULL UNIQUE, # Track name
worldid INTEGER NOT NULL, # ID of world track belongs to
CONSTRAINT TracksUnique UNIQUE (trackid, worldid),
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrTrackGroups (
trackgroupid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
trackid INTEGER NOT NULL, # ID of track
gid INTEGER NOT NULL, # ID of group in track
groupOrder INTEGER NOT NULL, # Denotes position of the group in the track
CONSTRAINT TrackGroupsUnique UNIQUE (trackid, gid),
FOREIGN KEY(trackid) REFERENCES PrTracks(trackid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(gid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
通过yum运行最新可用的MySQL服务器,PHP版本为5.3,还通过yum添加了PHP-MySQL。所有这些都在CentOS 5.5 64位上运行。数据库上的默认表类型是
MyISAM
还是其他MyISAM
还是其他ENTRYINDEX
并将自动增量
更改为自动增量
正确的代码如下:
CREATE TABLE IF NOT EXISTS PrWorlds ( # World table
worldid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
worldname VARCHAR(32) NOT NULL UNIQUE # Name of world
);
CREATE TABLE IF NOT EXISTS PrEntries ( # User/Group table
entryid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL, # Name of user/group
worldid INTEGER NOT NULL, # ID of the world the user/group belongs to
type TINYINT NOT NULL, # Type denotes the entry type. 0 for a user, 1 for a group
CONSTRAINT NameWorld UNIQUE (name, worldid, type),
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrPermissions ( # Table of permission nodes
permid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
permstring VARCHAR(64) NOT NULL, # Permission node
entryid INTEGER NOT NULL, # Entry whom this node belongs to
CONSTRAINT PrEntryPerm UNIQUE (entryid, permstring),
FOREIGN KEY(entryid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrInheritance ( # Table of parent-child relationships
uinheritid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
childid INTEGER NOT NULL, # Child entry
parentid INTEGER NOT NULL, # Parent entry
parentorder INTEGER NOT NULL, # Denotes order of inheritance.
# Groups override other groups' permissions/data
# below them in the results
CONSTRAINT PrParent UNIQUE (childid, parentid),
CONSTRAINT PrOrderedInheritance UNIQUE (childid, parentorder),
CONSTRAINT PrNoSelfInherit CHECK (childid <> parentid),
FOREIGN KEY(childid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(parentid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrWorldBase ( # Table of the default groups in that world
worldid INTEGER NOT NULL,
defaultid INTEGER, # Default group
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(defaultid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrData (
dataid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
entryid INTEGER NOT NULL , # ID entry whom this data node belongs to
path VARCHAR(64) NOT NULL, # Path to data node (e.g. "prefix", "build")
data VARCHAR(64) NOT NULL, # Data node in string form (o.toString())
CONSTRAINT PrDataUnique UNIQUE (entryid, path),
FOREIGN KEY(entryid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrTracks (
trackid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
trackname VARCHAR(64) NOT NULL UNIQUE, # Track name
worldid INTEGER NOT NULL, # ID of world track belongs to
CONSTRAINT TracksUnique UNIQUE (trackid, worldid),
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrTrackGroups (
trackgroupid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
trackid INTEGER NOT NULL, # ID of track
gid INTEGER NOT NULL, # ID of group in track
groupOrder INTEGER NOT NULL, # Denotes position of the group in the track
CONSTRAINT TrackGroupsUnique UNIQUE (trackid, gid),
FOREIGN KEY(trackid) REFERENCES PrTracks(trackid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(gid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
创建不存在的表PrWorlds(#World TABLE
worldid整数非空主键自动递增,
worldname VARCHAR(32)非空唯一#世界名称
);
创建表(如果不存在)(#用户/组表
entryid INTEGER NOT NULL主键自动递增,
name VARCHAR(32)不为空,#用户/组的名称
worldid INTEGER非空,#用户/组所属世界的ID
type TINYINT NOT NULL,#type表示条目类型。0表示用户,1表示组
约束名称世界唯一(名称、世界ID、类型),
外键(worldid)在更新级联上的删除级联上引用PrWorlds(worldid)
);
如果不存在权限,则创建表(#权限节点表
permid INTEGER NOT NULL主键自动递增,
permstring VARCHAR(64)不为NULL,#权限节点
entryid INTEGER NOT NULL,#此节点所属的条目
约束PrEntryPerm唯一(entryid,permstring),
外键(entryid)在更新级联的删除级联上引用prentrys(entryid)
);
如果不存在,则创建表优先级(#父子关系表
uinheritid INTEGER NOT NULL主键自动递增,
childid整数不为空,#子项
parentid整数不为空,#父项
parentorder INTEGER NOT NULL,#表示继承顺序。
#组覆盖其他组的权限/数据
#在结果中低于它们
约束PrParent UNIQUE(childid、parentid),
约束PrOrderedInheritance UNIQUE(childid、parentorder),
约束PrNoSelfInherit检查(childid parentid),
外键(childid)在更新级联上的删除级联上引用prentry(entryid),
外键(parentid)在更新级联的删除级联上引用PrEntries(entryid)
);
如果不存在,则创建表PrWorldBase(#该世界中默认组的表
worldid整数不为空,
defaultid整数,#默认组
外键(worldid)在更新级联上的删除级联上引用PrWorlds(worldid),
外键(defaultid)在更新级联的删除级联上引用Prentrys(entryid)
);
如果数据不存在,则创建表(
dataid INTEGER非空主键自动递增,
entryid INTEGER NOT NULL,#此数据节点所属的ID条目
path VARCHAR(64)不为空,#到数据节点的路径(例如“前缀”、“构建”)
data VARCHAR(64)不为NULL,#字符串形式的数据节点(o.toString())
约束PrDataUnique唯一(entryid,路径),
外键(entryid)在更新级联的删除级联上引用prentrys(entryid)
);
如果不存在,则创建表(
trackid INTEGER NOT NULL主键自动递增,
trackname VARCHAR(64)非空唯一,#Track name
worldid整数不为空,世界轨迹的#ID所属
约束TracksUnique UNIQUE(trackid,worldid),
外键(worldid)在更新级联上的删除级联上引用PrWorlds(worldid)
);
如果轨迹组不存在,则创建表格(
trackgroupid整数非空主键自动递增,
trackid整数不为空,#轨道的ID
gid整数不为空,#磁道中组的ID
groupOrder INTEGER NOT NULL,#表示组在轨迹中的位置
约束TrackGroupsUnique UNIQUE(trackid,gid),
外键(trackid)在更新级联上的删除级联上引用PrTracks(trackid),
外键(gid)在更新级联上的删除级联上引用Prentrys(entryid)
);
删除ENTRYINDEX
并将自动增量
更改为自动增量
正确的代码如下:
CREATE TABLE IF NOT EXISTS PrWorlds ( # World table
worldid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
worldname VARCHAR(32) NOT NULL UNIQUE # Name of world
);
CREATE TABLE IF NOT EXISTS PrEntries ( # User/Group table
entryid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL, # Name of user/group
worldid INTEGER NOT NULL, # ID of the world the user/group belongs to
type TINYINT NOT NULL, # Type denotes the entry type. 0 for a user, 1 for a group
CONSTRAINT NameWorld UNIQUE (name, worldid, type),
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrPermissions ( # Table of permission nodes
permid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
permstring VARCHAR(64) NOT NULL, # Permission node
entryid INTEGER NOT NULL, # Entry whom this node belongs to
CONSTRAINT PrEntryPerm UNIQUE (entryid, permstring),
FOREIGN KEY(entryid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrInheritance ( # Table of parent-child relationships
uinheritid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
childid INTEGER NOT NULL, # Child entry
parentid INTEGER NOT NULL, # Parent entry
parentorder INTEGER NOT NULL, # Denotes order of inheritance.
# Groups override other groups' permissions/data
# below them in the results
CONSTRAINT PrParent UNIQUE (childid, parentid),
CONSTRAINT PrOrderedInheritance UNIQUE (childid, parentorder),
CONSTRAINT PrNoSelfInherit CHECK (childid <> parentid),
FOREIGN KEY(childid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(parentid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrWorldBase ( # Table of the default groups in that world
worldid INTEGER NOT NULL,
defaultid INTEGER, # Default group
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(defaultid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrData (
dataid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
entryid INTEGER NOT NULL , # ID entry whom this data node belongs to
path VARCHAR(64) NOT NULL, # Path to data node (e.g. "prefix", "build")
data VARCHAR(64) NOT NULL, # Data node in string form (o.toString())
CONSTRAINT PrDataUnique UNIQUE (entryid, path),
FOREIGN KEY(entryid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrTracks (
trackid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
trackname VARCHAR(64) NOT NULL UNIQUE, # Track name
worldid INTEGER NOT NULL, # ID of world track belongs to
CONSTRAINT TracksUnique UNIQUE (trackid, worldid),
FOREIGN KEY(worldid) REFERENCES PrWorlds(worldid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS PrTrackGroups (
trackgroupid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
trackid INTEGER NOT NULL, # ID of track
gid INTEGER NOT NULL, # ID of group in track
groupOrder INTEGER NOT NULL, # Denotes position of the group in the track
CONSTRAINT TrackGroupsUnique UNIQUE (trackid, gid),
FOREIGN KEY(trackid) REFERENCES PrTracks(trackid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(gid) REFERENCES PrEntries(entryid) ON DELETE CASCADE ON UPDATE CASCADE
);
创建不存在的表PrWorlds(#World TABLE
worldid整数非空主键自动递增,
worldname VARCHAR(32)非空唯一#世界名称
);
创建表(如果不存在)(#用户/组表
entryid INTEGER NOT NULL主键自动递增,
name VARCHAR(32)不为空,#用户/组的名称
worldid INTEGER非空,#用户/组所属世界的ID
type TINYINT NOT NULL,#type表示条目类型。0表示用户,1表示组
约束名称世界唯一(名称、世界ID、类型),
外键(worldid)在更新级联上的删除级联上引用PrWorlds(worldid)
);
如果不存在权限,则创建表(#权限节点表
许可证