天道酬勤,学无止境

database

How to select the first null column in a row in mysql

问题 我是 MySQL 新手。 考虑一下这就是我的数据库中的表上一行的外观 id q1 q2 q3 q4 q5 这些列中的每一列的值如下 01 abc null null null 这意味着第 3 列 (q2) 为空 我想使用 MySQL 选择这个空列。 在此示例中,我知道 q3 为空,但是,当此代码在我的网站上运行时,我将不得不找出空列并将值插入其中。 有人能帮我一下吗? 提前致谢。 回答1

2022-05-17 05:12:07    分类:技术分享    php   mysql   database

A seperate table for the posts which each user has liked - practical or not?

问题 在我正在制作的社交网站中,我需要某种方法来存储用户“喜欢”了哪些帖子,以确保他们只能“喜欢”每个帖子一次。 我有几个想法。 每个用户都有一个单独的表,用于将他们喜欢的所有不同帖子的 ID 存储为所述表中的行。 以空格分隔的帖子 ID 字符串,作为users表中的字段。 每个帖子都有一个单独的表,将所有喜欢该帖子的不同用户的 ID 存储为表中的行。 注意, users是一个包含所有站点用户的表,包括他们的 ID、用户名等。 - 最初我喜欢为每个用户创建一个单独的表的想法,但我意识到这可能比它的价值更麻烦。 所以我认为users中每一行的空格分隔字符串可能是一个好主意,因为我不必开始使用更多的表(这可能会使事情复杂化),但我感觉使用空格分隔的字符串会与使用额外的表相比,性能下降的幅度要大得多,尤其是在用户数量较多的情况下。 基本上我的问题是:在上述确保用户只能喜欢一次帖子的方法中,哪种方法最实用? 回答1 这些听起来都不是特别好的主意。 通常,必须即时创建表,无论是为用户还是帖子,都是一个坏主意。 它不仅会使您的 SQL 生成复杂化,而且还会使数据字典中包含大量对象,并使维护数据库变得比应有的复杂得多。 逗号分隔的字符串也不是一个好主意。 它破坏了 1NF 将使您的查询复杂化(或更糟 - 让您编写正确的代码!)以维护它。 理智的方法是使用单个表来关联用户和帖子。

2022-05-17 04:50:58    分类:技术分享    mysql   database   database-design   innodb   social-networking

Is it safe to store AES IV prepended to CipherText in a DB?

问题 我想将 AES 加密数据存储在数据库字段中。 存储密文前面的 AES IV(每行唯一)是否安全? 例如 IV_密文 两者都将以 Base64 编码。 使用的密钥不会存储在数据库中。 回答1 这是安全的。 初始化向量的目的是在生成的密码中插入一些随机性(因此相同的消息不会导致相同的密码)。 它必须是不可预测的。 它可以公开存储在数据库中。 通常它被附加到消息的第一个字节。 如前所述,它的存在是为了避免统计攻击。

2022-05-17 04:45:12    分类:技术分享    database   cryptography   initialization-vector

Indirect modification of overloaded element of Illuminate\Support\Collection has no effect

问题 我在 laravel 框架中很新,我来自 codeigniter。 我想从数据库中添加新的键和值 static function m_get_promotion_banner(){ $query = DB::table("promotion_banner") ->select('promotion_banner_id','promotion_link','about_promotion') ->where('promotion_active','1') ->get(); if($query != null){ foreach ($query as $key => $row){ $query[$key]['promotion_image'] = URL::to('home/image/banner/'.$row['promotion_banner_id']); } } return $query; } 该代码刚刚从 codeigniter 更改为 laravel,因为在 codeigniter 中,在foreach语句中传递新的键和值没有问题 但是当我在 laravel 中尝试它时,我得到了以下错误: 间接修改Illuminate\Support\Collection的重载元素无效 at HandleExceptions->handleError(8, '间接修改

2022-05-17 04:16:07    分类:技术分享    database   laravel

How to pass a table or rows to a function in Postgresql?

问题 create or replace function skyband_sortedlist(rest point[]) returns setof point as $$ declare last_x integer :=0; last_y integer :=0; begin for ipoint in (select s0.x,s0.y from unnest(rest)) loop if ipoint.x>last_x and ipoint.y<>last_y then last_x = ipoint.x; last_y = ipoint.y; return next; end if; end loop; end; $$ language plpgsql; 回答1 行由复合类型表示,例如 CREATE TYPE mytype AS ( id integer, name text, fromdate timestamp with time zone ); 您可以将此类类型用作函数参数。 对于每个 PostgreSQL 表,自动存在一个具有相同名称和列的类型: CREATE TABLE mytable ( id integer PRIMARY KEY, name text, fromdate timestamp with time zone NOT NULL ); 因此

2022-05-16 23:29:04    分类:技术分享    database   postgresql

Microservices with shared database? using multiple ORM's? [closed]

问题 关闭。 这个问题是基于意见的。 它目前不接受答案。 想改进这个问题? 更新问题,以便可以通过编辑这篇文章用事实和引用来回答它。 1 年前关闭。 改进这个问题 我正在学习微服务,我将使用微服务架构构建一个项目。 问题是,我的一个队友想要为所有服务使用一个数据库,共享所有表以便“数据不会重复”,每个服务都将使用不同的框架和语言构建,例如 django 和 rails,它们使用非常不同的 ORM标准。 什么是正确的方法? 因为我认为使用一个数据库将涉及大量“破解” ORM 以使其正常工作。 回答1 如果所有服务共享相同的数据库表,您不太可能从微服务架构中受益。 这是因为您有效地紧密耦合服务。 如果数据库表发生更改,所有服务都必须更改。 您必须了解,微服务架构的全部原因是减少开发团队之间的依赖关系,并允许他们通过快速发布独立前进。 以下是亚马逊首席技术官 Werner Vogels 的一句话(亚马逊开创了许多微服务风格的架构): 对我们来说,面向服务意味着用对数据进行操作的业务逻辑封装数据,并且只能通过已发布的服务接口进行访问。 不允许从服务外部直接访问数据库,并且服务之间不存在数据共享。 有关更多信息,请阅读此和此。 2021年更新: 一些评论者指出,共享一个物理数据库可能是可以的,例如通过在同一个数据库中为不同的服务使用不同的表或模式。 这当然是可能的

2022-05-16 18:47:04    分类:技术分享    database   database-design   orm   architecture   microservices

mysqldump test locking tables

问题 我们有大约35G (innoDB) 的生产 mysql DB,当mysqldump启动应用程序变得不稳定时,我们注意到了。 我们使用以下命令运行转储 mysqldump --password=XXXX --add-drop-table foo | gzip -c > foo.dmp.gz 在谷歌搜索之后人们说mysqldump在转储数据之前锁定表,所以人们建议对innoDB使用--single-transaction标志 因此,对于实验,我手动启动 mysqldump 并在读/写表上运行一些查询,它允许我在 mysqldump 运行时执行所有操作,所以我如何重现 mysqldump 真正锁定我的表导致应用程序可访问性的这种行为? mysqldump 是否锁定读取操作或仅在表上写入? 在这种情况下,我们使用MyISAM的数据库很少,我们应该做些什么来避免锁定 回答1 使用--single-transaction来避免 InnoDB 表上的表锁定。 尽管您确实不应该使用 MyISAM,但您实际上对 MyISAM 无能为力。 最好的解决方法是创建一个只读副本并从该副本进行备份,这样锁定就不会影响应用程序。 您应该发现,在运行备份时,当前正在备份的单个数据库中的表上持有READ LOCAL锁,这意味着您可以从表中读取但写入(插入/更新/删除)将除了可以在不干扰锁的情况下实现的

2022-05-16 16:24:04    分类:技术分享    mysql   database   locking

laravel 5.4 dynamic database connection

问题 我正在 laravel 中构建入学门户, 我有一个超级管理员数据库,它有一个 100 行的学校表,学校表结构 1.id 2.school_name 3.database details 我想通过其 ID 连接到学校数据库及其数据库详细信息。 技术上 1.我将从 url 传递学校 ID 2.它将从学校表中选择该行 3.选择特定学校的数据库详细信息后 4.将连接到学校数据库以供进一步使用。 我经历了 https://laracasts.com/discuss/channels/tips/set-up-dynamic-database-connection-globally http://fideloper.com/laravel-multiple-database-connections 但没有运气 请帮忙解决。 回答1 实际上你不想要多个连接,而是改变现有的连接。 public function setSchoolConnection($id) { $school = School::find($id); if ( $school ) { config(['database.mysql' => [ 'database' => $school->database, 'username' => $school->username, 'password' => $school-

2022-05-16 12:36:05    分类:技术分享    php   mysql   database   laravel   dynamic

How to derive functional dependencies from a table

问题 回答1 实际上,函数依赖ABCDEF → G是数据中存在的唯一非平凡依赖。 这可以通过蛮力证明,因为对于每个不同属性组合的相同值,我们总是可以为每个剩余属性找到不同的值。 由于这是通过挖掘数据发现的唯一依赖关系,因此不可能有其他依赖关系,这是明显的琐碎依赖关系X → Y的一部分,对于属性X的每个组合, Y ⊆ X 。 回答2 给定一些成立的 FD,所有可以通过 Armstrong 公理推导出的 FD 也成立。 如果您知道唯一持有的 FD 是在某些给定的持有时持有的,即给定的形成覆盖,那么阿姆斯特朗公理会为您提供所有持有的 FD。

2022-05-16 11:46:04    分类:技术分享    database   database-design   database-normalization

How can I backup a mysql database from Java? [closed]

问题 关闭。 这个问题需要更加集中。 它目前不接受答案。 想改进这个问题? 更新问题,使其仅通过编辑此帖子专注于一个问题。 6年前关闭。 改进这个问题 如何使用 Java 程序备份 MySQL 数据库? 回答1 从java代码执行mysqldump 例子: 备份: Runtime.getRuntime().exec("mysqldump -u USERNAME -pPASSWORD DBNAME > /path/to/location/backup.sql"); 恢复: Runtime.getRuntime().exec("mysql -u USERNAME -pPASSWORD < /path/to/location/backup.sql"); 回答2 Runtime.getRuntime().exec("mysqldump -uroot -psome_password database_name > /whereever/dump_todays_date.sql"); 回答3 如果您正在寻找窗口版本? 这可能会有所帮助: 我如何从mysql数据库备份和恢复日期 回答4 看这个论坛,求帮助 http://www.programmingforums.org/thread19446.html

2022-05-16 10:15:03    分类:技术分享    java   sql   database