MYSQL Error Code:150

本文介绍了一个具体的SQL语句实例,用于创建一个名为'user_access'的表,并定义了两个外键约束,分别指向'server'表和'channel'表。通过详细展示字段类型与约束条件,为读者提供了外键使用的实际案例。
建立外键的时候,所有的参数都要匹配,比如unsigned not null 等等。
CREATE TABLE `user_access` (
  `AccessId` bigint(20) unsigned NOT NULL auto_increment,
  `ServerId` bigint(20) unsigned NOT NULL default '0',
  `ChannelId` bigint(20) unsigned NOT NULL default '0',
  `UserId` varchar(64) NOT NULL default '',
  `AccessStartTime` datetime default NULL,
  `AccessEndTime` datetime default NULL,
  `AccessValid` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`AccessId`),
  KEY `FK_SERV_ACC` (`ServerId`),
  KEY `FK_CHAN_ACC` (`ChannelId`),
  CONSTRAINT `FK_CHAN_ACC` FOREIGN KEY (`ChannelId`) REFERENCES `channel` (`ChannelId`) ON DELETE CASCADE,
  CONSTRAINT `FK_SERV_ACC` FOREIGN KEY (`ServerId`) REFERENCES `server` (`ServerId`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL 中出现 `unknown column ‘ranking’ in ‘field list’` 错误,通常意味着查询语句中引用了表中不存在的列。以下是一些可能的解决办法: ### 检查列名拼写 要确保查询语句中的列名 `ranking` 拼写正确,包括大小写(在某些 MySQL 配置中,列名是区分大小写的)。例如,错误的拼写会导致该错误,正确检查后修改即可。示例代码如下,假设要查询 `students` 表中的 `ranking` 列: ```sql -- 错误示例 SELECT rankking FROM students; -- 正确示例 SELECT ranking FROM students; ``` ### 检查表结构 确认 `ranking` 列确实存在于目标表中。可以使用 `SHOW COLUMNS` 语句查看表的结构,示例如下: ```sql SHOW COLUMNS FROM your_table_name; ``` 这里的 `your_table_name` 是你查询的表名。如果执行该语句后发现 `ranking` 列不存在,那么需要通过 `ALTER TABLE` 语句添加该列。例如: ```sql ALTER TABLE your_table_name ADD COLUMN ranking INT; ``` ### 检查表别名和作用域 如果查询中使用了表别名,要保证列名使用了正确的别名引用。例如: ```sql -- 错误示例 SELECT t.ranking FROM students t WHERE t.id = 1; -- 若表别名使用错误,会导致找不到该列 -- 正确示例 SELECT s.ranking FROM students s WHERE s.id = 1; ``` ### 检查视图 如果查询是基于视图的,要确保视图的定义中包含 `ranking` 列。参考引用中提到视图的相关规则,如果创建视图的子查询 SQL 语句中使用了别名,则对视图进行操作时也只能使用别名 [^2]。检查视图定义的示例如下: ```sql SHOW CREATE VIEW your_view_name; ``` 根据结果确认视图中是否包含 `ranking` 列,若不包含则需要修改视图定义。 ### 检查数据库和表的选择 要确保当前使用的数据库和表是正确的。可以使用 `USE` 语句切换数据库,使用 `SHOW TABLES` 查看当前数据库中的表。示例如下: ```sql -- 切换数据库 USE your_database_name; -- 查看当前数据库中的表 SHOW TABLES; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值