mysql常见错误汇总

news2024/11/16 15:55:18

mysql常见错误汇总

列别名问题

  1. 可以在查询选择列表中使用别名为列提供 不同名称。可以使用 、 或子句中的别名来引用该列:GROUP BY ORDER BY HAVING
SELECT SQRT(a*b) AS root FROM tbl_name
  GROUP BY root HAVING root > 0;
  
SELECT id, COUNT(*) AS cnt FROM tbl_name
  GROUP BY id HAVING cnt > 0;
  
SELECT id AS 'Customer identity' FROM tbl_name;
  1. 标准 SQL 不允许在子句中引用列别名。此限制是施加的 因为当评估子句时, 列值可能尚未确定。

例如,以下查询是非法的:WHERE

SELECT id, COUNT(*) AS cnt FROM tbl_name
  WHERE cnt > 0 GROUP BY id;

子句确定哪些行 应包含在条款中, 但它指的是未知的列值的别名 直到选择行并按 .WHERE GROUP BY GROUP BY

  1. 在查询的选择列表中,带引号的列别名可以是 使用标识符或字符串引号字符指定:
SELECT 1 AS `one`, 2 AS 'two';
  1. 在声明的其他地方,引用了对别名的引用 必须使用标识符引用,否则引用被视为 字符串文字。例如,此语句按 列中的值,使用 别名:id ‘a’
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY `a`;

例如,以下查询是非法的

此语句按文本字符串分组,并且无法按预期工作:'a'

SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY 'a';

使用 DATE 列的问题

日期值的格式为

根据标准 SQL,不允许使用其他格式。你 应该在 UPDATE 表达式和 SELECT 语句的子句中使用此格式。

例如:‘YYYY-MM-DD’ ‘WHERE’

SELECT * FROM t1 WHERE date >= '2003-05-05';

为方便起见,MySQL会自动将日期转换为 数字(如果日期用于数字上下文),

MySQL还允许在以下情况下使用“宽松”字符串格式

INSERT INTO t1 (idate) VALUES (19970505);
INSERT INTO t1 (idate) VALUES ('19970505');
INSERT INTO t1 (idate) VALUES ('97-05-05');
INSERT INTO t1 (idate) VALUES ('1997.05.05');
INSERT INTO t1 (idate) VALUES ('1997 05 05');
INSERT INTO t1 (idate) VALUES ('0000-00-00');

SELECT idate FROM t1 WHERE idate >= '1997-05-05';
SELECT idate FROM t1 WHERE idate >= 19970505;
SELECT MOD(idate,100) FROM t1 WHERE idate >= 19970505;
SELECT idate FROM t1 WHERE idate >= '19970505';

但是,以下语句不起作用:

SELECT idate FROM t1 WHERE STRCMP(idate,'20030505')=0;

STRCMP是一个字符串函数, 因此,它会转换为格式的字符串并执行字符串比较。它不会转换为日期并执行日期比较。所以报错

空值问题

NULL与空字符串不是一回事

例如, 以下陈述完全不同:NULL

INSERT INTO my_table (phone) VALUES (NULL);
 INSERT INTO my_table (phone) VALUES ('');

这两个语句都在列中插入一个值,但第一个语句插入一个值,第二个语句插入一个空值 字符串。

第一个的含义可以看作是“电话号码未知”和 第二种可以看作是“该人已知 没有电话,因此没有电话号码。phoneNULL

可以使用 IS NULL 和 IS NOT NULL 运算符和 IFNULL() 函数来查看

在 SQL 中,NULL 与任何其他值相比,该值永远不会为真除非另有说明

示例 返回值是NULL

SELECT NULL, 1+NULL, CONCAT('Invisible',NULL);

对于任何表达式都从不为 true:NULLexpr = NULLexpr = NULL

SELECT * FROM my_table WHERE phone = NULL;

若要查找值,必须使用 IS NULL测试。

以下语句显示如何查找电话NULL号码和’ '电话号码:

SELECT * FROM my_table WHERE phone IS NULL;
SELECT * FROM my_table WHERE phone = ' ';

COUNT 它计算行和 不是单个列值。例如,以下 语句生成两个计数。第一个是计数 表中的行数,第二个是 列中的非值数:NULL NULLage

SELECT COUNT(*), COUNT(age) FROM person;

使用 MySQL 程序时的常见错误

1 拒绝访问

Access denied

一个错误可以有很多 原因。通常问题与MySQL帐户有关 服务器允许客户端程序在以下情况下使用 连接

2 无法连接到[本地] MySQL服务器

Can’t connect to [local] MySQL server

查看是否可以ping通 如果不可以检查防火墙是否放行 如果可以检查端口是否被占用 线程是否成功开启

3 与 MySQL 服务器的连接丢失

Lost connection to MySQL server

检查一下网络问题 如果是本机查看防火墙和端口

4 以交互方式输入密码失败

加一个-p

Password Fails When Entered Interactively

 mysql -u user_name -p

5 连接过多

Out of memory

这意味着 MySQL 没有足够的内存来 存储整个查询结果:

mysql: Out of memory at line 42, 'malloc.c'
mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)
ERROR 2008: MySQL client ran out of memory

要解决此问题,请首先检查查询是否 正确。

它应该返回这么多行是否合理? 如果没有,请更正查询,然后重试。

否则,可以 使用 -quick 选项调用 MySQL 主要,这会减少 客户端上的负载(但服务器上的负载更多)

7 MySQL 服务器已消失

MySQL server has gone away
在这里插入图片描述

这个需要可以去日志中去具体查看

细致分析错误

错误1

ERROR 1044 (42000):Access denied for user

错误解析

数据库拒绝

解决

常见于用户授权不足。可登陆root用户,变更当前用户的对应权限。

错误2

ERROR 1045 (28000): Access denied for user *** (using password: YES

错误解析

数据库拒绝,登录密码错误

解决

核实登录密码

错误3

ERROR 1054 (42S22): Unknown column *** in ‘where clause’

错误解析

根据限定条件无法找到指定的列内容

解决

检查输入的列内容及限制条件是否正确

错误4

ERROR 1064 (42000): You have an error in your SQL syntax;

错误解析

语法错误:在语句中出现错误

解决

  1. 检查语法是否符合规定的语法规则,如登录时@符号后是否有空格

  2. 查看是否使用了保留字,找到对应的保留字,不是必须的建议修改,尽量不和保留字冲突。如果确实得用 ,就用反引号(’ ‘)把内容引起来

错误5

ERROR 1072 (42000): Key column ‘***’ doesn’t exist in table

错误解析

引用的***字段,不存在

解决

检查是否拼写错误

错误6

ERROR 1130: Host 10.0.0.1 is not allowed to connect to this MySQL server

错误解析

不允许通过ip地址10.0.0.1访问指定数据库

解决

指定登录主机信息错误。登录root用户,修改用户登录主机信息

错误7

ERROR 1133 (42000): Can’t find any matching row in the user table

错误解析

在user表中未找到指定的用户

解决

可以用flush privileges;刷新一遍,再试。如果还不行的话,核实用户信息是否正确,存在。

错误8

ERROR 1142 (42000): CREATE command denied to user ‘guest04’

错误解析

数据库拒绝执行创建命令,‘guest04’无相关的授权

解决

可以用flush privileges;刷新一遍,再试。如果还不行的话,核实用户信息是否正确,存在。

错误9

ERROR 1144 (42000): Illegal GRANT/REVOKE command;

错误解析

授权内容不合法

解决

修改成合法的

错误10

ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation

错误解析

数据库拒绝执行,原因是没有取得相应动作的授权(此处为创建用户)

解决

查看确认授权情况。确实有需要,在root用户登陆后添加相应授权

错误11

ERROR 1241 (21000): Operand should contain 1 column(s)

错误解析

进行子查询的时候,选项需要1列但选择对象不唯一。

解决

选择唯一的或者变成唯一的

错误12

ERROR 1248 (42000): Every derived table must have its own alias

错误解析

在多级查询中,派生出来的表格需要加一个别名。

解决

这是为了保证每个派生出来的表都需要有一个自己的别名。

错误13

ERROR 1701 (42000): Cannot truncate a table referenced

错误解析

清空失败,还有外键关联的情况下,无法情况当前数据表

解决

解决外键就好了

错误14

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

错误解析

密码策略异常信息:格式不符合当前密码格式需求

解决

换一个

错误15

ERROR 2002 (HY000): Can’t connect to local MySQL server through [socket] ‘/tmp/mysql.sock’ (2)

错误解析

mysql的服务端,服务未启动,或者出现mysql进程异常 ,通过mysql.server status查看

解决

手动重启一下mysql服务,windows找到mysql服务,macbook中系统偏好中找到mysql服务重启
或者执行命令
 sudo /usr/local/mysql/support-files/mysql.server stop
 sudo /usr/local/mysql/support-files/mysql.server start

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Grafana安装和实现可视化和告警

1、Grafana安装和实现可视化和告警 Prometheus UI 提供了快速验证 PromQL 以及临时可视化支持的能力,但其可视化能力却比较弱。一般情况下, 我们都用 Grafana 来实现对 Prometheus 的可视化实现。 1.1 什么是 Grafana Grafana 是一个用来展示各种各样…

【Linux】可重入函数

文章目录 前言一. 场景二. 可重入与线程安全结束语 前言 在Linux中,进程/线程可能因为时间片到达,或者其他中断,或者调用系统,需要从用户态切换到内核态,而内核空间会保存切换前,用户代码执行处的上下文&a…

环境搭建【1】VM和ubuntun 环境搭建

1.安装VMware 1.1 下载安装包 (1)官网下载:https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0 (2)百度网盘:https://pan.baidu.com/s/…

5.pixi.js编写的塔防游戏(类似保卫萝卜)-子弹跟随精灵移动

游戏说明 一个用pixi.js编写的h5塔防游戏,可以用electron打包为exe,支持移动端,也可以用webview控件打包为app在移动端使用 环境说明 cnpm6.2.0 npm6.14.13 node12.22.7 npminstall3.28.0 yarn1.22.10 npm config list electron_mirr…

【详解】篮球记分牌硬件及代码

篮球记分牌设计 1 系统设计1.1 设计任务 1.2 性能指标要求1.2 设计思路及设计框图1.2.1设计思路1.2.2总体设计框图1.2.3电路原理图1.2.3 PCB布线图 2 主要程序模块的设计及原理2.1 外部中断0 2.2 菜单2.3 两队比分及两队犯规次数显示及修改2.3.1选择功能2.3.2修改功能2.3.3显示…

golang vscode环境报错gopls was not able to find modules in your workspace的解决方式

目录 错误提示 分析 解决方式 方法一:将workspace与项目路径保持一致 方案二:使用go work指明纳入工作区的的module 总结 错误提示 golang从老版本升级到go1.20.5后打开vscode,发现代码不能自动补全了,而且vscode跳出一下的…

dolphinscheduler创建创建租户错误

报错信息 [ERROR] 2023-06-17 17:04:10.282 org.apache.dolphinscheduler.api.exceptions.ApiExceptionHandler:[45] - 创建租户错误 org.apache.hadoop.security.AccessControlException: Permission denied: userhdfs, accessWRITE, inode"/":root:supergroup:drw…

搭建自己的 new bing网站----nginx反代(群晖,全docker版)

文章目录 1.前言:2. 部署过程:2.1.部署go-proxy-bing 项目:2.1.部署nginx反代:这两步完成实际上就可以访问了, 3.部署聊天服务器:代表链接成功! 1.前言: 本篇教程全萌新向&#xff…

Qt for Android 调试遇到问题总结

一、首次编译Downloading “Gradle” 无法下载导致编译无法完成问题 解决办法: 1、通过地址:https://services.gradle.org/distributions/gradle-5.5.1-bin.zip单独下载 2、再将下载的gradle-5.5.1-bin.zip放到“C:\Users\hp\.gradle\wrapper\dists\gr…

软件工程导论期末急救包(上)

目录 什么是软件工程?它的目标和内容是什么? 软件文档作用及包含 软件过程模型 瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 软件生存周期 需求分析阶段的基本任务是什么? 可行性研究的任务是什么? 软件是什…

MySQL——MySQL的图形化界面工具安装与使用

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 写在前面: 一.DataGrip安装使用 1). 找到下载准备好的安装包&am…

2023 最新 1200 道 JAVA 面试题,囊括面试所有硬核技能

Java 面试八股文有必要背吗? 我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。现如今,Java 面试的本质就是八股文,把八股文面试题背好,面试才有可能表现好。…

power gating/power switch/level shift/IR-drop

目录 1.power gating 2.level shift 3.IR-drop 1.power gating power gating 的设计重点如下: 1)Power Switch的设计; 2)Power Gating controller的设计; 3)retention register和isolation cell的选择及插入; 4)Power Gati…

【Pandas】pandas用法解析(一)

目录 一、生成数据表 1.导入pandas库 2.导入CSV或者xlsx文件 3.用pandas创建数据表 二、数据表信息查看 1.维度查看 2.数据表基本信息(维度、列名称、数据格式、所占空间等) 3.每一列数据的格式 4.某一列格式 5.空值判断 6.查看某一列空值 7…

使用torch的自动微分实现自定义函数优化

前言 目的是利用torch已经有的自动微分机制,进行参数迭代更新,就不用自己写代码算了。 文章目录 前言1. 待优化函数1.1 解释 2. 代码3. 结果 1. 待优化函数 y 10 ( x 1 x 2 − 5 ) 2 ( x 1 − x 2 ) 2 y10\times(x_1x_2-5)^2(x_1-x_2)^2 y10(x1​x…

oracle中如何修改日期类型的字段值

系列文章目录 文章目录 系列文章目录前言一、数据库表方式进行修改二、sql方式步骤总结 前言 Oracle是一家全球领先的数据库管理系统(DBMS)和企业软件公司。Oracle Corporation成立于1977年,总部位于美国加利福尼亚州的红木城(Re…

SpringBoot整合篇

SpringBoot整合第三方技术 1、整合缓存 何为缓存? 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高系统性能缓存不仅可以用于提高永久性存储介…

腾讯云最新社招面经出炉(面试原题+答案解析)

前言 大家好,今天给大家分享一篇腾讯云的面经,以下是面试题和答案。加油,一起卷。 聊聊项目,好的设计,好的代码 谈谈什么是零拷贝? 一共有几种 IO 模型?NIO 和多路复用的区别? F…

Get请求参数过多导致请求失败

1. 问题 系统正常使用没有问题,但是有极个别的用户出现系统异常,通过日志发现某个get请求,传入的城市list太多,就会抛出异常 java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map。 2. 排查过程 …

Elasticsearch 安装(Linux)

ElasticSearch 概念安装安装es 后台启动 & 停止启动nohup 记录pid 停止 其他启动错误max number of threads内存不足 Cannot allocate memoryfailed to obtain node locks 概念 ES是一款分布式全文搜索引擎,基于Lucene,进行了二次封装,更…