在域上上传后,MySql 无法识别某些表列

Posted

技术标签:

【中文标题】在域上上传后,MySql 无法识别某些表列【英文标题】:MySql is not recognizing some Table Columns after uploading on Domain 【发布时间】:2014-10-03 20:54:05 【问题描述】:

我使用 codeigniter 框架创建了一个网站。它在本地主机上工作得很好。查询正在获取数据并显示所需的结果。但是在我将网站上传到我的域后,它会给出奇怪的错误消息。相同的查询在 localhost 上运行良好,但在域数据库 phpMyAdmin 上生成错误消息。

一些查询工作正常,例如用户登录查询和其他一些基本查询,但包含复杂连接的查询仅在域上生成错误消息..

以下查询在 localhost 上运行良好,但在 Domain DB 上生成缺失列错误消息。

Error Number: 1054

Unknown column 'Semester_courses.SemisterCourseId' in 'on clause'

SELECT sum( student_marks.FinalMarks ) , semester_courses.in_semester, 
student_marks.StudentId FROM student_marks 
JOIN semester_courses
ON student_marks.SemisterCourseId = Semester_courses.SemisterCourseId 
WHERE 
semester_courses.in_semester =1 
GROUP BY semester_courses.in_semester , student_marks.StudentId 
order by student_marks.FinalMarks Desc 
Limit 0,1

Filename: /home/tahakirmani/public_html/ums/models/loginmodel.php

Line Number: 1523 

【问题讨论】:

DESCRIBE Semester_courses; 的输出是什么(还要注意该输出的大小写)?你的GROUP BY 建议semester_courses 应该是小写,而你的ON 应该是大写。 #1146 - 表“secs.Semester_courses”不存在 【参考方案1】:

您在查询semester_courses 时使用了大写和小写的表名:

JOINON 部分中的Semeter_courses 更改为小写,您应该没问题(假设您的字段名称拼写正确):

SELECT sum( student_marks.FinalMarks ), semester_courses.in_semester, student_marks.StudentId
FROM student_marks 
JOIN semester_courses
ON student_marks.SemisterCourseId = semester_courses.SemisterCourseId 
WHERE semester_courses.in_semester = 1 
GROUP BY semester_courses.in_semester, student_marks.StudentId 
ORDER BY student_marks.FinalMarks DESC;

【讨论】:

谢谢..我只是复制并粘贴您的代码并得到结果,没有任何错误消息,但我仍然无法理解为什么它在 localhost 上工作正常? 可能是其他 mysql 设置(或者您是否从 windows 机器减轻到 unix 机器?) 我在我的系统上使用 windows,在我的虚拟主机服务器上使用 linux。 大概就是这样。表名(及其文件)在 Windows 上不区分大小写,但它们在基于 unix 的机器上。

以上是关于在域上上传后,MySql 无法识别某些表列的主要内容,如果未能解决你的问题,请参考以下文章