天道酬勤,学无止境

mysql

如何解决 MS SQL 中不受支持的无符号整数字段类型?(How to work around unsupported unsigned integer field types in MS SQL?)

问题 尝试使基于 MySQL 的应用程序支持 MS SQL,我遇到了以下问题: 我将 MySQL 的 auto_increment 保留为无符号整数字段(各种大小),以便利用整个范围,因为我知道永远不会有负值。 MS SQL 不支持所有整数类型的 unsigned 属性,因此我必须在放弃一半的值范围或创建一些解决方法之间做出选择。 一种非常幼稚的方法是将一些代码放入数据库抽象代码或存储过程中,该过程在 db 端的负值和来自无符号范围的较大部分的值之间进行转换。 这当然会搞乱排序,而且它也不适用于自动识别功能(或者以某种方式?)。 我现在想不出一个好的解决方法,有没有? 或者我只是狂热而应该忘记大约一半的范围? 回答1 问题何时可能成为真正的问题? 鉴于当前的增长率,您预计 MS SQL 版本中多久会发生有符号整数溢出? 悲观。 您希望应用程序存活多久? 您是否仍然认为 2 的差异系数是您应该担心的? (我不知道答案是什么,但我认为我们应该确定我们确实有问题,然后再更努力地寻找解决方案) 回答2 我建议使用 BIGINT 数据类型,因为这会增加到 9,223,372,036,854,775,807。 SQL Server 不支持有符号和无符号值。 回答3 我会这样说..“我们通常如何处理组件之间的差异?” 封装不同的东西.. 您需要在数据访问层中创建一个抽象层,以使其不关心数据库是

2021-09-20 04:53:17    分类:技术分享    mysql   sql-server   database   interop

强实体 vs 弱实体 MYSQL(Strong vs Weak entities MYSQL)

问题 对于 MySQL/SQL 的分配,我需要创建 2 个不同的表来显示强实体和弱实体之间的区别。 有人可以向我展示我将如何执行此操作的示例吗? 我知道一个强大的实体可以在没有另一个实体的情况下存在,而对于一个弱实体来说则不然。 因此,例如,一个强大的实体将如下所示: Employee(EmpNo, Name, EmpId) ? 但我不确定如何创建一个显示差异的表格。 回答1 想象一下具有以下列的Employee表: EmployeeID , EmpName, EmpDept,... Managers表将是这样的: ManagerID, EmployeeID(foreign-key),ManagerName,... 现在,每个Manager 都是一个 Employee ,因此如果Manager表中有一个 Manager,那么Employee表中也会有相同的条目。 保持“是”关系: Each manager is a Employee but each Employee is not a Manager 查询将类似于: CREATE TABLE Employee ( EmployeeID int NOT NULL, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255

2021-09-20 04:37:31    分类:技术分享    mysql   sql   entity-framework

在单个查询中分组、排序和计数(Group, Sort and Count in a single query)

问题 我试图在一个名为“商品”的表中的单个查询中对GROUP 、 SORT和COUNT进行GROUP 、 SORT和COUNT 。 这是我的MySql表的简化: family sub_family name detailed_name Agro Grains Wheat Wheat per 1 mt Agro Grains Corn Corn per 1 mt Agro Grains Sugar Sugar per 1 mt Agro Fruits Apple Apple red Agro Fruits Apple Apple green Agro Fruits Apple Apple yellow Agro Fruits Lemon Lemon classic Wood Tree Lemon Lemon in logs Wood Tree Oak Oak in logs Wood Tree Epicea Epicea in logs Wood Packaging Kraftliner Krafliner 3mm 我想 : 按name GROUP 按family 、 sub_family family和name SORT COUNT行数为每个family , sub_family然后name (在相同sub_family ) 到目前为止,我设法在同一个sub

2021-09-20 04:27:20    分类:技术分享    mysql   sql   sorting   count   group-by

hive.HiveImport:失败:SemanticException [错误 10072]:数据库不存在:(hive.HiveImport: FAILED: SemanticException [Error 10072]: Database does not exist:)

问题 我正在尝试将 MySQL 数据库导入 Hive 以根据博客分析大型 MySQL 数据,有几种方法可以做到这一点 非实时:Sqoop 实时:用于 MySQL 的 Hadoop 应用程序 所以我决定采用“非实时”方法,并且我已经设置了具有 4 个节点、Sqoop 和 Hive 的 Hadoop 集群,它们在以下版本中运行良好 名称版本 Apache Hadoop 2.6.0 Apache Hive hive-0.14.0 Apache Sqoop sqoop-1.4.5.bin__hadoop-2.0.4-alpha 现在当我尝试使用以下命令导入数据时 导入命令 sqoop-import-all-tables --verbose --connect jdbc:mysql://X.X.X.X/edgeowt --username root -P --hive-import --warehouse-dir /user/hive/warehouse --hive-database edgeowt.db --hive-overwrite 然后我收到以下错误 错误 INFO hive.HiveImport: FAILED: SemanticException [Error 10072]: Database does not exist: edgeowt.db 15/04/16 13:32

2021-09-20 03:58:25    分类:技术分享    mysql   hadoop   hive   sqoop   hadoop2

如何改进 MySQL 子查询中的 LIMIT 子句?(How to improve LIMIT clause in MySQL subquery?)

问题 我有两个表:具有 10k 行和comments posts ,我需要选择特定数量posts所有comments ,换句话说,按posts表实现分页并获取其中的所有comments 。 为此,我有下一个查询: select * from comments c inner join (select post_id from posts o order by post_id limit 0, 10) p on c.post_id = p.post_id; 查询的性能对我来说也很重要。 但是这个查询的Explain很奇怪,因为LIMIT子句迭代了9976 rows但没有像我期望的那样迭代 10 行: 同时,当我单独运行子查询时,它可以按预期迭代 10 行: explain select post_id from posts o order by post_id limit 0, 10 还有关于posts(post_id), comments(comment_id), comments(post_id) indexes 。 我不明白该查询有什么问题,因此它遍历 posts 表中的所有记录。 如果有人帮助我解决这个问题,我将非常感激。 回答1 首先,您的 qwuery 没有迭代 9976 行。 Explain 显示了对查询将读取的行数的估计(实际上,它生成大量执行计划并丢弃所有执行计划

2021-09-20 03:16:57    分类:技术分享    mysql   sql   performance   subquery   limit

mysql_connect 第二次不起作用(mysql_connect doesn't work second time)

问题 未回答的重复:如何在异常后重新连接 php adodb:Mysql 服务器消失或在查询过程中失去与 MySQL 服务器的连接 mysql_connect 第一次工作,但之后再也没有工作...... $connectDb = mysql_connect(secret, secret, secret); mysql_select_db("secret", $connectDb); $sleepPeriod = 1800; sleep($sleepPeriod); while (true) { $result = mysql_query("good query", $connectDb); if (!$result) { if (mysql_error()=='MySQL server has gone away') { echo "MySql connection was disconnected... reconecting...\n"; $connectDb = mysql_connect(secret, secret, secret); mysql_select_db("secret", $connectDb); continue; } else { die("Invalid Query: ".__FILE__.':'.__LINE__.' '.mysql_error()

2021-09-20 03:16:54    分类:技术分享    php   mysql   mysql-connect   mysql-error-1005

Preventing server-side scripting, XSS(Preventing server-side scripting, XSS)

问题 是否有任何预制脚本可用于 PHP/MySQL 以防止服务器端脚本和 JS 注入? 我知道典型的函数,例如 htmlentities、特殊字符、字符串替换等。 任何想法都会很棒。 非常感谢 :) 编辑:一些通用的东西可以去除任何可能有害的东西,即。 大于/小于符号、分号、“DROP”等词? 我基本上只是想将所有内容压缩为字母数字,我猜...? 回答1 永远不要将任何数据输出到尚未通过htmlspecialchars()传递的 HTML 流中,您就完成了。 规则简单,易于遵循,彻底杜绝任何XSS风险。 不过,作为程序员,你的工作就是这样做。 你可以定义 function h(s) { return htmlspecialchars(s); } 如果htmlspecialchars()太长而无法为每个 PHP 文件写入 100 次。 另一方面,根本没有必要使用htmlentities() 。 关键是:有代码,有数据。 如果你把两者混在一起,坏事就会接踵而至。 在 HTML 的情况下,代码是元素、属性名称、实体、注释。 数据就是一切。 必须对数据进行转义以避免被误认为是代码。 在 URL 的情况下,代码是方案、主机名、路径、查询字符串的机制( ? 、 & 、 = 、 # )。 数据是查询字符串中的所有内容:参数名称和值。 它们必须被转义以避免被误认为是代码。 嵌入在 HTML 中的

2021-09-20 03:16:39    分类:技术分享    php   mysql   security   xss

如果 Doctrine 中不存在,则尝试创建相同实体的并发请求(Concurrent requests trying to create the same entity if not exists in Doctrine)

问题 我有一个看起来像这样的函数: function findByAndCreateIfNotExists($criteria){ $entity = $this->findBy(['criteria'=>$criteria]); // this is the problem area, if request 1 is still creating the entity, request 2 won't find it yet. if (! $entity) { $entity = $this->createEntity($criteria); } return $entity; } 这个函数被各种请求使用,我发现并发请求有时会尝试创建相同的实体,抛出DBALException抱怨唯一键的重复条目。 我已经考虑过这里提到的LOCK TABLES :How to lock a whole table in symfony2 with dotric2? 但鉴于在 Doctrine 中没有执行此操作的功能,我猜这不是首选方法。 我的问题是,如何防止并发请求尝试创建相同的实体并始终返回正确的实体? 回答1 作为想法创建自己的锁定系统: 就像是: function findByAndCreateIfNotExists($criteria){ $entity = $this->findBy([

2021-09-20 02:52:03    分类:技术分享    php   mysql   symfony   doctrine-orm

如果 Doctrine 中不存在,则尝试创建相同实体的并发请求(Concurrent requests trying to create the same entity if not exists in Doctrine)

问题 我有一个看起来像这样的函数: function findByAndCreateIfNotExists($criteria){ $entity = $this->findBy(['criteria'=>$criteria]); // this is the problem area, if request 1 is still creating the entity, request 2 won't find it yet. if (! $entity) { $entity = $this->createEntity($criteria); } return $entity; } 这个函数被各种请求使用,我发现并发请求有时会尝试创建相同的实体,抛出DBALException抱怨唯一键的重复条目。 我已经考虑过这里提到的LOCK TABLES :How to lock a whole table in symfony2 with dotric2? 但鉴于在 Doctrine 中没有执行此操作的功能,我猜这不是首选方法。 我的问题是,如何防止并发请求尝试创建相同的实体并始终返回正确的实体? 回答1 作为想法创建自己的锁定系统: 就像是: function findByAndCreateIfNotExists($criteria){ $entity = $this->findBy([

2021-09-20 02:49:13    分类:技术分享    php   mysql   symfony   doctrine-orm

SQL获取每分钟的数字计数(SQL to get number count per minute)

问题 我有一个数据集,如: id name updated_at 1 test1 2014-06-30 09:00:00 1 test2 2014-06-30 09:01:10 1 test3 2014-06-30 09:01:23 1 test4 2014-06-30 09:01:43 1 test5 2014-06-30 09:02:02 1 test6 2014-06-30 09:02:34 1 test7 2014-06-30 09:03:22 1 test8 2014-06-30 09:03:28 我需要按分钟计算过去十分钟的行数。 所以它应该总是返回十个数字,即最后更新的行数。 关于如何有效地做到这一点的任何想法? 回答1 最近 10 个结果 http://sqlfiddle.com/#!9/3d586/22 --get the minute component of the update time select minute(updated_at) as Sec --count the number of records which have this minute , count(1) as Cnt from myTable --use group by to ensure we return 1 row per minute group by minute

2021-09-20 02:29:33    分类:技术分享    mysql   sql