即使该表实际上存在于我的数据库中,字段中的未知表“课程”

Posted

技术标签:

【中文标题】即使该表实际上存在于我的数据库中,字段中的未知表“课程”【英文标题】:Unknown table 'courses' in field even though the table actually exist in my database 【发布时间】:2021-07-22 11:41:28 【问题描述】:

我有两个表,第一个是课程表,它保存了 course_id、course_name、course_time、学分……第二个是 selected_course_list 表,它保存了用户的课程。过程是用户在Textfield中输入一个course_id,程序会找出对应的课程信息(course_id, course_name, course_time...)然后保存到用户的selected_course_list表中。

但是我使用 sql 将课程插入到 select_course_list 中

问题是:实际上我在我的数据库中创建了一个课程表,但编译器在字段中显示了未知表“课程”。为什么?顺便说一句,请帮我检查一下我的插入代码是否正确。

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school_project", "root","");
String sql1 = "INSERT INTO select_course_list(id,course_id,course_class,course_name,course_type,credit,class_time,max,selected) "
                            + "SELECT courses.id, courses.course_id, courses.course_class, courses.course_name, courses.course_type, courses.credit, courses.class_time, courses.max, courses.selected"
                            + "FROM courses  "
                            + "WHERE courses.course_id = "+course_code.getText()+" ";
PreparedStatement ps = con.prepareStatement(sql1);
ps.executeUpdate(sql1);  

编译器展示:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
java.sql.SQLSyntaxErrorException: Unknown table 'courses' in field listjava.sql.SQLSyntaxErrorException: Unknown table 'courses' in field list

【问题讨论】:

【参考方案1】:

欣赏,但还有一个问题。

代码:

Class.forName("com.mysql.jdbc.Driver");
                    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school_project", "root","");

                      String sql1 = "INSERT INTO select_course_list(id,course_id,course_class,course_name,course_type,credit,class_time,max,selected) "
                              + "SELECT cs.id, cs.course_id, cs.course_class, cs.course_name, cs.course_type, cs.credit, cs.class_time, cs.max, cs.selected "
                              + "FROM courses cs "
                              + "WHERE cs.course_id  = "+course_code.getText()+"";  
                    PreparedStatement ps = con.prepareStatement(sql1);
                    ps.executeUpdate(sql1);

输出是

com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: ''

【讨论】:

以上是关于即使该表实际上存在于我的数据库中,字段中的未知表“课程”的主要内容,如果未能解决你的问题,请参考以下文章

即使满足条件并且即使目标表和源表中的字段已经存在,雪花合并也会添加数据

“字段列表”中的未知列名“table.column”

SQL - 使用表填充数据

错误代码:1054。“字段列表”中的未知列

按名字和姓氏自动完成搜索

未知标记器:sqlite3 请求中的 icu