Err 1114
ERROR: 1114, The table 'XXXXXXX' is full
- 老版本的innodb_data_file_path = ibdata1:10M:autoextend:max:128M配置,改为innodb_data_file_path = ibdata1:10M:autoextend
- 查看数据库所在磁盘,可能是磁盘满了。
Err 1041
[Err] 1041 - Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
Err 1146
[Err] 1146 - Table 'h2.cm_customerinfo' doesn't exist
表不存在
Err 1054
[Err] 1054 - Unknown column 'DescribeInfo' in 'field list'
字段名字有误
注意,添加字段不要有关键字,关键字加上``符号。
Err 1063
#1063 - Incorrect column specifier for column 'xxx'错误
比如主键是自增的,字段类型却是char之类,是无法自增,会出现这个提示
Err 1064
语法错误
Err 1093
ERROR 1093 (HY000): You can't specify target table 'TEST' for update in FROM clause
Update的时候包含子查询,会出该异常。
update TEST_NOIDX set CREATETIME=now() where ID in ( select a.ID from TEST_NOIDX a where a.VNAME='Aa');
如此,肯定不行,Mysql对子查询处理,很不好。解决办法:1子查询外再嵌套一层,2使用inner join
update TEST_NOIDX set CREATETIME = now() where ID in (select id from ( select id from TEST_NOIDX where VNAME ='Aa') aa);
update TEST_NOIDX b inner join ( select a.ID,a.CREATETIME from TEST_NOIDX a where a.VNAME='Aa') c on b.ID=c.ID set b.CREATETIME=now();
Err 1136
[SQL] insert into `user` VALUES ('c',''),('d',NULL);
[Err] 1136 - Column count doesn't match value count at row 1
列计数与第1行的值计数不匹配
如果语法表后的(字段1,字段2)默认没有,那么默认为全字段,后面没有赋值的时候,没有对齐;另外前面写了字段,后面缺少字段赋值,或者前面缺少字段,后面多了字段赋值就会出这个问题。
如:`user`表字段有`id`,`name`,`address`
insert into `user`[无字段参数默认为全部] VALUES ('c',''),('d',NULL); 错误
insert into `user`(`name`) VALUES ('c',''),('d',NULL); 错误
insert into `user`(`name`,`address`) VALUES ('c'),('d'); 错误
insert into `user`(`name`,`address`) VALUES ('c',''),('d',NULL); 正确
Err 1175
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode,
toggle the option in Preferences - SQL Editor and reconnect.
解决方案:
这是因为MySql运行在safe-updates模式下,该模式会导致非主键条件下无法执行update或者delete命令,
执行命令SET SQL_SAFE_UPDATES = 0;修改下数据库模式
Err 1226
[Err] 1226 - User 'cmh' has exceeded the 'max_questions' resource (current value: 40)
Err 1227
[Err] 1227 - Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation
[错误]1227-访问被拒绝;您需要(至少一个)此操作的超级或系统变量管理权限
Err 1232 - Incorrect argument type to variable 'XXXXXXXX'
set global tmp_table_size=64M;
动态设置变量的时候,不能直接写带单位的,可以改成:
set global tmp_table_size=64*1024*1024;
show global VARIABLES like 'tmp_table_size';
Err 1238
动态设置静态参数
Set global datadir='/db/mysql';
[Err] 1238 - Variable 'datadir' is a read only variable
Err 1264 - Out of range value for column 'c1' at row 1
列超出范围值,如浮点 定点 整型
Err 1292 - Truncated incorrect DOUBLE value: '/Department/Index'
update sys_stationpower Set PageUrl='/Admin'+PageUrl where PageUrl!='-';
在sql语句进行字符串拼接时,不是我们MSSQL习惯的使用“+”,而是使用mysql自带的字符拼接 函数concat(str1,str2,...)
update sys_stationpower Set PageUrl=CONCAT('/Admin',PageUrl) where PageUrl!='-';
Err 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled
此函数的声明中没有确定性、没有SQL或读取SQL数据,并且启用了二进制日志记录
分析:
因为CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE,ALTER FUNCTION,CALL, DROP PROCEDURE, DROP FUNCTION等语句都会被写进二进制日志,然后在从服务器上执行。但是,一个执行更新的不确定子程序(存储过程、函数、触发器)是不可重复的,在从服务器上执行(相对与主服务器是重复执行)可能会造成恢复的数据与原始数据不同,从服务器不同于主服务器的情况。
为了解决这个问题,MySQL强制要求:
在主服务器上,除非子程序被声明为确定性的或者不更改数据,否则创建或者替换子程序将被拒绝。
这意味着当创建一个子程序的时候,必须要么声明它是确定性的,要么它不改变数据。
声明方式有两种,
第一种:声明是否是确定性的
DETERMINISTIC和NOT DETERMINISTIC指出一个子程序是否对给定的输入总是产生同样的结果。
如果没有给定任一特征,默认是NOT DETERMINISTIC,所以必须明确指定DETERMINISTIC来声明一个子程序是确定性的。
这里要说明的是:使用NOW() 函数(或它的同义)或者RAND() 函数不会使一个子程序变成非确定性的。对NOW()而言,二进制日志包括时间戳并会被正确的执行。RAND()只要在一个子程序内被调用一次也可以被正确的复制。所以,www.linuxidc.com可以认为时间戳和随机数种子是子程序的确定性输入,它们在主服务器和从服务器上是一样的。
第二种:声明是否会改变数据
CONTAINS SQL, NO SQL, READS SQL DATA, MODIFIES SQL用来指出子程序是读还是写数据的。
无论NO SQL还是READS SQL DATA都指出,子程序没有改变数据,但是必须明确地指定其中一个,因为如果任何指定,默认的指定是CONTAINS SQL。
默认情况下,如果允许CREATE PROCEDURE 或CREATE FUNCTION 语句被接受,就必须明确地指定DETERMINISTIC 或 NO SQL与READS SQL DATA 中的一个,否则就会产生1418错误。
Err 1451 -Cannot delete or update a parent row: a foreign key constraint fails (...)
FOREIGN_KEY_CHECKS启动和关闭外键约束的方法
在MySQL中删除一张表或一条数据的时候,出现
[Err] 1451 -Cannot delete or update a parent row: a foreign key constraint fails (...)
这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。
Err 1052 - Column 'UserID' in group statement is ambiguous
多出现在连表查询中,两张表都有相同字段,那么必须加别名/表名 别名[表名].字段
Err 1701 截断表的时候有约束
Cannot truncate a table referenced in a foreign key constraint (`kunming_data`.`en_answer`, CONSTRAINT `en_answer_ibfk_1` FOREIGN KEY (`QuestionsID`) REFERENCES `kunming_data`.`en_questions` (`ID`))
此问题跟Err1451一样处理。
Err 单行长度
MYSQL规定一个行的定义长度不能超过65635,根据字符集gbk一字符2字节,utf8一字符3字节。
如表
Id int,
Username varchar(20),
Phone bigint,
Address(n)
当采用gbk,id占4字节,username占41字节(gbk下一个字符2字节,20*2=40,小于255长度,存储长度值为1字节),
Phone占8字节,address(gbk下长度让其超过255,存储长度值为2字节)
计算结果(65535-4-41-8-2)/2=32740 n最长只能是32740.
同样utf8下,(65535-4-61-8-2)/3=21820 n最长只能是21820.
Err Unable to convert MySQL date/time value to System.DateTime
读取到到C#出错,DateTime范围为1000-9999,数据库出现0216-12-25,年份错误,典型时间范围错误。改为2016正常了。
Err Mysql8.0.11 caching_sha2_password 无法登录
因为mysql8.0.11 默认加密方式【caching_sha2_password】,Navicat for MySQL和Navicat Premium 12和Mysql Workbench客户端不支持。
改变下加密方式
alter user 'cmhdl521'@'%' identified with mysql_native_password by 'genie810304~!_+';
常见的客户端软件即可登录,然后WEB,刷新然后依然是这个错误caching_sha2_password
Ini中:
# The default authentication plugin to be used when connecting to the server
当连接到服务器时使用的默认身份验证插件
[mysqld]
default_authentication_plugin=caching_sha2_password
改成
[mysqld]
default_authentication_plugin=mysql_native_password
然后正常了
The user specified as a definer ('sa'@'%') does not exist
一般是迁移数据库之后的问题
The user specified as a definer ('sa'@'%') does not exist
查看mysql的存储过程的定义者,必须改成拥有的角色名字。
The specified value is not an instance of a valid constant type.
The specified value is not an instance of a valid constant type.
An error occurred while updating the entries. See the inner exception for details.
指定的值不是有效常数类型的实例。
更新条目时出错。详情请参阅内部异常。
EF和MYSQL 支持还是不完善,EF实体集不支持标记为无符号的字段,会生成错误的映射,当mysql的值设置为无符号,会导致EF添加、修改失败。
Err The provider did not return a ProviderManifestToken string.
EF链接Mysql的时候连接字符串错误,无法访问数据库