当前位置: 首页 > news >正文

东莞软件开发培训珠海seo关键词排名

东莞软件开发培训,珠海seo关键词排名,wordpress如何去掉加密保护,网站开发工作内容考虑兼容国产化数据库,现需要将Mysql5.7变为GreatSQL,在执行部分sql时,发现在Mysql5.7无报错,在GreatSQL有报错,在此记录一下遇到的几个错误。 1.ERROR 1231 (NO_AUTO_CREATE_USER) 1.1.报错提示 ERROR 1231 (42000…

考虑兼容国产化数据库,现需要将Mysql5.7变为GreatSQL,在执行部分sql时,发现在Mysql5.7无报错,在GreatSQL有报错,在此记录一下遇到的几个错误。

1.ERROR 1231 (NO_AUTO_CREATE_USER)

1.1.报错提示

ERROR 1231 (42000) at line 16494: Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

1.2.报错部分

主要是最后一句

/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8mb3 */ ;
/*!50003 SET character_set_results = utf8mb3 */ ;
/*!50003 SET collation_connection  = utf8mb3_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;

1.3.报错原因

5.7时不会存在这个问题,但是如果是8.0版本MySQL,sql_mode 中不再支持 NO_AUTO_CREATE_USER。

1.3.1.补充

NO_AUTO_CREATE_USER 是一个已废弃的 SQL 模式选项,在早期的 MySQL 版本中用于控制 GRANT
语句的行为。当这个模式被激活时,它会阻止 GRANT 语句自动创建不存在的用户账户,除非在授予权限的同时也指定了用户的密码。这意味着,如果你尝试为一个尚不存在的用户授予权限, 而且没有提供密码,MySQL 不会自动创建这个用户,而是会失败或者忽略这个请求。
例如,如果你执行如下 GRANT 语句:
GRANT SELECT ON database.* TO ‘newuser’@‘localhost’;
在 NO_AUTO_CREATE_USER 模式下,如果 ‘newuser’@‘localhost’ 这个用户之前不存在,并且没有同时提供一个密码,这个命令将会失败,以防止无意识地创建用户账户。 然而,从 MySQL 8.0.11 开始,包括 NO_AUTO_CREATE_USER 在内的几个与账户管理相关的旧特性已被移除,因此在 MySQL 8.0 及以后的版本中, 你不再需要也不应该使用 NO_AUTO_CREATE_USER 这个模式选项。在这些新版本中,如果想要创建用户并授予权限, 必须明确地使用 CREATE USER 语句创建用户,然后再使用 GRANT 语句分配权限,并且在创建用户时提供密码。

1.4.解决方案

删掉NO_AUTO_CREATE_USER模式,(主要是最后一句报错)修改后如下

/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8mb3 */ ;
/*!50003 SET character_set_results = utf8mb3 */ ;
/*!50003 SET collation_connection  = utf8mb3_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;

2.ERROR 1064 (IF NOT EXISTS)

2.1.报错提示

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS `count` int(10) NOT NULL AFTER `number`' at line 1

2.2.报错部分

ALTER TABLE test_table_name ADD COLUMN IF NOT EXISTS `count` int(10) NOT NULL AFTER `number`;

2.3.报错原因

在 GreatSQL 中,ALTER TABLE 语句通常不支持 IF NOT EXISTS 选项。

2.4.解决方案

2.4.1.移除IF NOT EXISTS
ALTER TABLE test_table_name ADD COLUMN `count` int(10) NOT NULL AFTER `number`;

确保不会重复执行可直接去除IF NOT EXISTS,否则重复执行会报错。

2.4.2.使用存储过程先判断再添加

添加字段存储过程(对于已经存在的字段不再添加)

DROP PROCEDURE IF EXISTS p_alter_table;
delimiter //
CREATE PROCEDURE p_alter_table()
begin
IF NOT EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='test' AND table_name='your_table_name' AND COLUMN_NAME='your_column') and EXISTS(SELECT 1 FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND table_name='your_table_name') THEN-- 你要执行的语句	ALTER TABLE your_table_name ADD COLUMN your_column int(10) NOT NULL AFTER `number`;
END IF;
end;
//
delimiter ;
call p_alter_table();

3.ERROR 1101 - (default value)

3.1.报错提示

1101 - BLOB, TEXT, GEOMETRY or JSON column 'describe' can't have a default value

3.2.报错部分

CREATE TABLE IF NOT EXISTS `test_table` (`id` int(10) NOT NULL AUTO_INCREMENT,`name` varchar(64) NOT NULL,`time` int(10) NOT NULL,`describe` MEDIUMTEXT DEFAULT '',PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

3.3.报错原因

在 GreatSQL 中,BLOB、TEXT、MEDIUMTEXT、LONGTEXT、GEOMETRY 或 JSON 等类型的列不允许设置默认值。它们的存储方式和使用场景与其他基本数据类型不同。设置默认值可能会引发复杂性和性能问题。

3.4.解决方案

3.4.1.移除默认值
CREATE TABLE IF NOT EXISTS `test_table` (`id` int(10) NOT NULL AUTO_INCREMENT,`name` varchar(64) NOT NULL,`time` int(10) NOT NULL,`describe` MEDIUMTEXT,PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3.4.2.使用其他数据类型

如果需要一个可以有默认值的列,可以考虑使用 VARCHAR 或其他支持默认值的类型。

CREATE TABLE IF NOT EXISTS `test_table` (`id` int(10) NOT NULL AUTO_INCREMENT,`name` varchar(64) NOT NULL,`time` int(10) NOT NULL,`describe` varchar(255) DEFAULT '',PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3.4.3.应用程序层处理默认值

在插入数据时,应用程序可以在没有提供该字段的值时手动设置默认值。

http://www.khdw.cn/news/44465.html

相关文章:

  • 深圳龙岗网络北京网优化seo公司
  • 建门户网站软件培训机构排名
  • 免费建材网站模板外贸营销平台
  • 用专业的网络技术制作网站阻断艾滋病的药有哪些
  • 网站建设模板怎么用最新黑帽seo培训
  • 制作一个静态网站源码产品优化是什么意思
  • 公司门户网站建设公司网店营销推广
  • 学网络营销有用吗seo是什么级别
  • 兰州疫情最新情况今日新增九江seo公司
  • 广州机械网站建设关键词规划师
  • 四平公司做网站百度基木鱼建站
  • 科技企业网站设计制作成都seo优化推广
  • 校友录网站开发设计中国万网域名注册官网
  • 西安云英网站建设汕头网站制作设计
  • 3d绘图培训学校成都网站建设方案优化
  • 购物网站开发背景2021最火营销方案
  • 淄博网站建设-至信网络百度客服在线咨询
  • 建设银行手机银行网站登录竞价推广怎么做
  • 无锡网站建设哪家好百度认证官网申请
  • 鸟人高端网站建设seo服务 收费
  • 宁波疫情最新数据深圳优化seo排名
  • 网站seo诊断工具seo工作前景如何
  • 可以做翻译任务的网站排名优化外包公司
  • 白狐网站建设查销售数据的网站
  • 网站和域名网络热词2021
  • 家里笔记本做网站 怎么解析怎么样推广自己的店铺和产品
  • 如何查看网站备案信息seo和sem的区别与联系
  • 学生网站设计网站优化怎么操作
  • 做爰全过程免费的视频凤凰网站每天三分钟新闻天下事
  • 油漆涂料网站建设seo关键词快速排名软件