Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL语法错误?_Sql_Syntax_Phpmyadmin_Mysql - Fatal编程技术网

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

有人知道下面的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 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
还是其他外键,但SQL没有指定要使用的表类型。

数据库上的默认表类型是
MyISAM
还是其他外键,但SQL没有指定要使用的表类型。

删除
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)
);
如果不存在权限,则创建表(#权限节点表
许可证