鱼C论坛

 找回密码
 立即注册
查看: 563|回复: 6

运行出错请问该如何修改?

[复制链接]
发表于 2023-4-11 12:19:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
CREATE TABLE IF NOT EXISTS 学生表 (
        sno CHAR(10) NOT NULL COMMENT '学号',
    sn VARCHAR(12) NOT NULL COMMENT '姓名',
    sex ENUM('男','女') NOT NULL DEFAULT '男' COMMENT '性别',
    dat DATE NOT NULL COMMENT '出生日期',
    maj VARCHAR(10) NOT NULL COMMENT '专业',
    DEP VARCHAR(10) NOT NULL COMMENT '院系',
    pho VARCHAR(11) NOT NULL COMMENT '联系电话',
    PRIMARY KEY (sno)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
INSERT INTO 学生表 (sno,sn,sex,dat,maj,DEP,pho)
VALUES ('0433','张艳','女','2000-9-13','计算机','信息学院',' '),
('0496','李越','女','2001-1-23','信息','信息学院','1381290xxxx'),
('0529','赵欣','男','2002-2-27','信息','信息学院','1350222xxxx'),
('0531','张志国','女','2002-10-10','自动化','工学院','1331256xxxx'),
('0538','于兰兰','男','2002-2-1','数学','理学院','1331200xxxx'),
('0591','王丽丽','女','2003-3-21','计算机','信息学院','1332080xxxx'),
('0592','王海强','女','2003-9-1','数学','理学院','');

CREATE TABLE IF NOT EXISTS 课程表 (
        course_sno CHAR(10) NOT NULL COMMENT '课程号',
    cn CHAR(30) NOT NULL COMMENT '课程名',
    cnu FLOAT(6) NOT NULL COMMENT '学分数',
    cti FLOAT(6) NOT NULL COMMENT '学时数',
    tec VARCHAR(12) NOT NULL COMMENT '任课教师',
    PRIMARY KEY (course_sno)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;

                               
登录/注册后可看大图
INSERT INTO 课程表 (course_sno,cn,cnu,cti,tec),
VALUES ('K001','计算机图形学','2.5','40','胡晶晶'),
('K002','计算机应用基础','3','48','任泉'),
('K006','数据结构','4','64','马跃先'),
('M001','政治经济学','4','64','孔繁新'),
('S001','高等数学','3','48','赵晓尘');


CREATE TABLE IF NOT EXISTS 学生成绩表 (
        course_sno CHAR(10) NOT NULL COMMENT '课程号',
    sno CHAR(10) NOT NULL COMMENT '学号',
    tim FLOAT NOT NULL COMMENT '选课时间',
    nor INT NOT NULL COMMENT '平时成绩',
        pro FLOAT NOT NULL COMMENT '平时成绩比重',
    tex INT NOT NULL COMMENT '考试成绩',
    PRIMARY KEY (course_sno)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;

                               
登录/注册后可看大图
INSERT INTO 学生成绩表(course_sno,sno,tim,nor,pro,tex),
VALUES ('K001','0433','2017-8-23 16:14:11','90.5','0.4','93.5'),
('K001','0529','2017-8-24 8:15:11','85','0.3','90'),
('K001','0531','2017-8-25 10:18:34','57','0.4','75'),
('K001','0591','2017-8-24 15:20:24','81.5','0.4','71.5'),
('K002','0496','2018-2-25 15:20:24',' ','0.3',' '),
('K002','0529','2018-2-24 10:15:21','70','0.4','83'),
('K002','0531','2018-2-25 13:20:19','75','0.2','81.5'),
('K002','0538','2018-2-24 14:20:24','70.5','0.4','73'),
('K002','0592','2018-2-15 9:18:12','85','0.4',' '),
('K006','0531','2018-8-25 19:17:25','93','0.3','86'),
('K006','0591','2018-8-24 13:19:45','85','0.4','82'),
('M001','0496','2019-2-23 10:8:11','83','0.3','91'),
('M001','0591','2019-2-25 12:14:12','92.5','0.4','89'),
('S001','0531','2019-8-26 13:15:12','82.5','0.4','77'),
('S001','0538','2019-8-27 15:10:12','75.2','0.3','');


                               
登录/注册后可看大图


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-11 12:27:10 | 显示全部楼层
您好!根据您提供的代码,我发现了几个问题。请参考以下修复后的代码:

  1. CREATE TABLE IF NOT EXISTS 学生表 (
  2.         sno CHAR(10) NOT NULL COMMENT '学号',
  3.     sn VARCHAR(12) NOT NULL COMMENT '姓名',
  4.     sex ENUM('男','女') NOT NULL DEFAULT '男' COMMENT '性别',
  5.     dat DATE NOT NULL COMMENT '出生日期',
  6.     maj VARCHAR(10) NOT NULL COMMENT '专业',
  7.     DEP VARCHAR(10) NOT NULL COMMENT '院系',
  8.     pho VARCHAR(11) NOT NULL COMMENT '联系电话',
  9.     PRIMARY KEY (sno)
  10. ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
  11. INSERT INTO 学生表 (sno,sn,sex,dat,maj,DEP,pho)
  12. VALUES ('0433','张艳','女','2000-9-13','计算机','信息学院',' '),
  13. ('0496','李越','女','2001-1-23','信息','信息学院','1381290xxxx'),
  14. ('0529','赵欣','男','2002-2-27','信息','信息学院','1350222xxxx'),
  15. ('0531','张志国','女','2002-10-10','自动化','工学院','1331256xxxx'),
  16. ('0538','于兰兰','男','2002-2-1','数学','理学院','1331200xxxx'),
  17. ('0591','王丽丽','女','2003-3-21','计算机','信息学院','1332080xxxx'),
  18. ('0592','王海强','女','2003-9-1','数学','理学院','');

  19. CREATE TABLE IF NOT EXISTS 课程表 (
  20.         course_sno CHAR(10) NOT NULL COMMENT '课程号',
  21.     cn CHAR(30) NOT NULL COMMENT '课程名',
  22.     cnu FLOAT(6) NOT NULL COMMENT '学分数',
  23.     cti FLOAT(6) NOT NULL COMMENT '学时数',
  24.     tec VARCHAR(12) NOT NULL COMMENT '任课教师',
  25.     PRIMARY KEY (course_sno)
  26. ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
  27. INSERT INTO 课程表 (course_sno,cn,cnu,cti,tec)
  28. VALUES ('K001','计算机图形学','2.5','40','胡晶晶'),
  29. ('K002','计算机应用基础','3','48','任泉'),
  30. ('K006','数据结构','4','64','马跃先'),
  31. ('M001','政治经济学','4','64','孔繁新'),
  32. ('S001','高等数学','3','48','赵晓尘');

  33. CREATE TABLE IF NOT EXISTS 学生成绩表 (
  34.         course_sno CHAR(10) NOT NULL COMMENT '课程号',
  35.     sno CHAR(10) NOT NULL COMMENT '学号',
  36.     tim TIMESTAMP NOT NULL COMMENT '选课时间',
  37.     nor INT NOT NULL COMMENT '平时成绩',
  38.     pro FLOAT NOT NULL COMMENT '平时成绩比重',
  39.     tex INT NOT NULL COMMENT '考试成绩',
  40.     PRIMARY KEY (course_sno, sno)
  41. ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
  42. INSERT INTO 学生成绩表(course_sno, sno, tim, nor, pro, tex)
  43. VALUES ('K001','0433','2017-8-23 16:14:11',90.5,0.4,93.5),
  44. ('K001','0529','2017-8-24 8:15:11',85,0.3,90),
  45. ('K001','0531','2017-8-25 10:18:34',57,0.4,75),
  46. ('K001','0591','2017-8-24 15:20:24',81.5,0.4,71.5),
  47. ('K002','0496','2018-2-25 15:20:24',NULL,0.3,NULL),
  48. ('K002','0529','2018-2-24 10:15:21',70,0.4,83),
  49. ('K002','0531','2018-2-25 13:20:19',75,0.2,81.5),
  50. ('K002','0538','2018-2-24 14:20:24',70.5,0.4,73),
  51. ('K002','0592','2018-2-15 9:18:12',85,0.4,NULL),
  52. ('K006','0531','2018-8-25 19:17:25',93,0.3,86),
  53. ('K006','0591','2018-8-24 13:19:45',85,0.4,82),
  54. ('M001','0496','2019-2-23 10:8:11',83,0.3,91),
  55. ('M001','0591','2019-2-25 12:14:12',92.5,0.4,89),
  56. ('S001','0531','2019-8-26 13:15:12',82.5,0.4,77),
  57. ('S001','0538','2019-8-27 15:10:12',75.2,0.3,NULL);
复制代码



在此修复的问题有:

1. 在 `学生成绩表` 定义中,将 `tim` 列的数据类型从 `FLOAT` 更改为 `TIMESTAMP`。
2. 将学生成绩表的主键更改为 `(course_sno, sno)`,因为同一个课程和同一个学生之间的关系应该是唯一的。
3. 在 `INSERT INTO 学生成绩表` 语句中,删除了多余的括号。
4. 将平时成绩和考试成绩中的空值用 `NULL` 替换,因为在 SQL 中,空值应该使用 `NULL` 表示。

现在您应该可以运行修复后的代码,如果有其他问题,请随时告诉我。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-11 12:44:37 | 显示全部楼层
isdkz 发表于 2023-4-11 12:27
您好!根据您提供的代码,我发现了几个问题。请参考以下修复后的代码:


                               
登录/注册后可看大图
请问这是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-11 12:45:49 | 显示全部楼层
isdkz 发表于 2023-4-11 12:27
您好!根据您提供的代码,我发现了几个问题。请参考以下修复后的代码:

Error Code: 1062. Duplicate entry '0433' for key '学生表.PRIMARY'
请问这是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-11 12:48:16 | 显示全部楼层
黑脸艺术家 发表于 2023-4-11 12:45
Error Code: 1062. Duplicate entry '0433' for key '学生表.PRIMARY'
请问这是什么意思

错误代码1062表示在尝试插入数据时遇到了主键冲突。在这种情况下,这意味着您尝试插入的数据行具有与已存在数据行相同的主键值。在您的例子中,主键是学号(sno),所以这意味着您可能已经插入了一个具有相同学号 '0433' 的学生。

要解决这个问题,请确保每个学生的学号都是唯一的。请检查您的 INSERT INTO 学生表 语句,确保没有重复的学号。如果有重复,请更正它们以避免冲突。同时,检查您的数据库,以确保之前没有插入具有相同主键的数据。

如果这是首次运行此脚本,可以通过确保 INSERT INTO 学生表 语句中没有重复的学号来解决问题。如果您之前已经运行了这个脚本,您可能需要删除已存在的具有相同主键值的数据,或者清空表格以避免插入冲突。

如果您已经修复了数据并且仍然遇到问题,请告诉我。我将帮助您进一步调查。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-12 09:54:04 | 显示全部楼层
本帖最后由 黑脸艺术家 于 2023-4-12 09:56 编辑
isdkz 发表于 2023-4-11 12:48
错误代码1062表示在尝试插入数据时遇到了主键冲突。在这种情况下,这意味着您尝试插入的数据行具有与已存 ...


学生成绩表中,依据您的修改将空值写为NULL,出现以下错误:
Error Code: 1048. Column 'nor' cannot be null
若改回原来空值的写法‘   ’,则出现以下错误:
Error Code: 1366. Incorrect integer value: '' for column 'nor' at row 5
(row 5:  nor INT NOT NULL COMMENT '平时成绩',   )

且变量tex也出现同样错误提示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 10:22:38 | 显示全部楼层
黑脸艺术家 发表于 2023-4-12 09:54
学生成绩表中,依据您的修改将空值写为NULL,出现以下错误:
Error Code: 1048. Column 'nor' cannot  ...

由于 nor 和 tex 列的数据类型是 INT,并且在表结构中设置为 NOT NULL,所以不能插入 NULL 值。

解决方案是允许这两列插入 NULL 值。请参考以下修复后的代码:

在创建学生成绩表的语句中,将 nor 和 tex 列的定义更改为允许 NULL 值:

  1. CREATE TABLE IF NOT EXISTS 学生成绩表 (
  2.         course_sno CHAR(10) NOT NULL COMMENT '课程号',
  3.     sno CHAR(10) NOT NULL COMMENT '学号',
  4.     tim TIMESTAMP NOT NULL COMMENT '选课时间',
  5.     nor INT NULL COMMENT '平时成绩',
  6.     pro FLOAT NOT NULL COMMENT '平时成绩比重',
  7.     tex INT NULL COMMENT '考试成绩',
  8.     PRIMARY KEY (course_sno, sno)
  9. ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
复制代码


然后您可以使用之前修复的 INSERT INTO 学生成绩表 语句,将空值写为 NULL。现在应该可以正常运行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 05:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表