SQL2005数据库出现,错误824
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL2005数据库出现,错误824相关的知识,希望对你有一定的参考价值。
引用SQLServer帮助的信息:此错误表明 Windows 报告已从磁盘成功读取页,但 SQL Server 检测到页中存在错误。此错误与错误 823 类似,只是 Windows 不检测这一错误。这通常表明 I/O 子系统中存在问题,例如磁盘驱动器存在故障、磁盘固件存在问题、设备驱动程序不正确等等。
查找硬件故障
运行硬件诊断以解决任何问题。也可以通过检查 Microsoft Windows 系统和应用程序日志以及 SQL Server 错误日志以查看是否存在由硬件故障引起的错误。解决这些日志中包含的所有与硬件相关的问题。如果存在持久性数据损坏问题,请尝试改用其他的硬件组件来解决此问题。进行检查以确保系统未启用磁盘控制器上的写缓存。如果您怀疑是写缓存出现问题,请与硬件供应商联系。最后,您可能会发现,切换到全新的硬件系统是解决问题的极佳途径。此切换操作可能包括格式化磁盘驱动器和重新安装操作系统。
如果出现的问题与硬件无关,并且已知的干净备份可用,则请从备份中还原数据库。
考虑将数据库改为使用 PAGE_VERIFY CHECKSUM 选项。 参考技术A 运行硬件诊断以解决任何问题。 也可以通过检查 Microsoft Windows 系统和应用程序日志以及 SQL Server 错误日志以查看是否存在由硬件故障引起的错误。 解决这些日志中包含的所有与硬件相关的问题。
如果持续遇到数据损坏问题,请尝试分别换下不同的硬件组件以确定问题所在。 进行检查以确保系统未启用磁盘控制器上的写缓存。 如果您怀疑是写缓存出现问题,请与硬件供应商联系。
最后,您可能会发现,切换到全新的硬件系统是解决问题的极佳途径。 此切换操作可能包括格式化磁盘驱动器和重新安装操作系统。
从三个表中获取数据但出现 SQL 语法错误
【中文标题】从三个表中获取数据但出现 SQL 语法错误【英文标题】:Fetching data from three tables but getting error of SQL syntax 【发布时间】:2019-03-24 11:27:02 【问题描述】:我正在从三个表中获取数据:
$result = $this->db->query("
SELECT
`meetings`.*,
`follow_up`.id as follow_up_id,
`follow_up`.comment as follow_up_comment,
`follow_up`.date as follow_up_date,
`follow_up`.time as follow_up_time,
SELECT first_name, last_name, user_mobile, useralt_mobile from users where id = user_id,
(SELECT address FROM day_location WHERE `meetings`.assigned_to_id = user_id AND `follow_up`.date = date LIMIT 1) AS location_name
FROM meetings
LEFT JOIN follow_up ON `meetings`.id = `follow_up`.`meeting_id`
WHERE follow_up.`date` BETWEEN '$fromDate_formated' AND '$toDate_formated'
" . ($user_id > 0 ? " AND `meetings`.assigned_to_id = '$user_id'" : '') . "
ORDER BY `follow_up`.id DESC
");
错误:
发生数据库错误 错误号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 7 行的 'SELECT first_name, last_name, user_mobile, useralt_mobile from users where id = ' 附近使用正确的语法 选择
meetings
.*,follow_up
.id 作为follow_up_id,follow_up
.comment 作为follow_up_comment,follow_up
.date 作为follow_up_date,follow_up
.time 作为follow_up_time,从用户中选择first_name、last_name、user_mobile、useralt_mobile id = user_id, (SELECT address FROM day_location WHEREmeetings
.assigned_to_id = user_id ANDfollow_up
.date = date LIMIT 1) AS location_name FROM meeting LEFT JOIN follow_up ONmeetings
.id =follow_up
.meeting_id
WHERE follow_up.date
BETWEEN '2018-10-01' AND '2018-10-31' ANDmeetings
.assigned_to_id = '1' ORDER BYfollow_up
.id DESC
你能帮忙吗?
【问题讨论】:
在此处复制/粘贴错误文本,而不是发布图像。 这个SELECT first_name, last_name,...
应该做什么?
你应该使用JOIN
's 而不是这些子查询。
看起来您将一堆随机选择扔到一个语句中,这完全弄乱了语法。
您应该添加适当的数据样本和预期结果
【参考方案1】:
你需要替换这个:
SELECT first_name, last_name, user_mobile, useralt_mobile from users where id = user_id,
有了这个:
(SELECT first_name, last_name, user_mobile, useralt_mobile from users where id = user_id),
【讨论】:
现在收到此错误Operand should contain 1 column(s)
那是因为您在另一个选择语句中使用了多重选择语句:first_name、last_name、user_mobile、useralt_mobile。您应该 CONCAT() 那些或复制每个选定列的选择。【参考方案2】:
要获取用户信息,您应该使用联接
$result = $this->db->query("
SELECT
`meetings`.*,
`follow_up`.id as follow_up_id,
`follow_up`.comment as follow_up_comment,
`follow_up`.date as follow_up_date,
`follow_up`.time as follow_up_time,
users.first_name,
users.last_name,
users.user_mobile,
users. useralt_mobile,
(SELECT address FROM day_location WHERE `meetings`.assigned_to_id = user_id AND `follow_up`.date = date LIMIT 1) AS location_name
FROM meetings
LEFT JOIN follow_up ON `meetings`.id = `follow_up`.`meeting_id`
LEFT JOIN users on users.id = `meetings`.assigned_to_id
WHERE follow_up.`date` BETWEEN '$fromDate_formated' AND '$toDate_formated'
" . ($user_id > 0 ? " AND `meetings`.assigned_to_id = '$user_id'" : '') . "
ORDER BY `follow_up`.id DESC");
【讨论】:
以上是关于SQL2005数据库出现,错误824的主要内容,如果未能解决你的问题,请参考以下文章
我使用SQL server 2008附加2005的数据库,但是出现错误!
SQL2005在附加数据库的时候出现无法打开物理文件,操作系统拒绝,这是怎么回事?有啥好的方法可以解决?