问题标签 [legacy-database]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
213 浏览

ruby-on-rails - 使 ActiveRecord 自动附加一些 SQL

[更新问题以澄清]

我可以在 Rails 3/3.1 中创建一个模型并让 ActiveRecord 自动使用/附加一些我配置到该模型的连接吗?

前任:

使用这样的代码:

但是 ActiveRecord 在底层调用方法base_query而不需要显式调用它。只是为了让它更像 Rails。

有任何想法吗?

0 投票
1 回答
298 浏览

database - 旧文件架构 - 逆向工程

我目前正在将超过 20k 的数据库表从 Corel Paradox 4.0 格式(基于 DOS,扩展名为 .db)转换为 SQL 数据库,而不是使用现成的软件,我目前正在研究使用光脚本语言,如 Python(或 Ruby 或 PHP,但 Python 是理想的,因为我正在使用 Windows 桌面设置——尽管如果需要我可以启动我的一个 Linux VM 进行开发)让我编写一组代码来简单拉取一个目录下的所有.db文件,一键输出一组.sql数据库。

现在,虽然我知道 PHP 有一个专门用于处理 Paradox 文件的有限库,但在涉及 Python、Ruby 和其他语言时,我运气不佳。

我现在的问题是,在编写转换格式的脚本时,我该如何定义要输入的文件的语法?例如,当涉及到 .exe、.zip、.msi 等时,是否有发布供开发人员遵循的单一格式/语法,如果有,最全面/可靠的来源是什么?

我目前有一个 Paradox for Windows 的副本,可用于查看字段和表格,但这对我的脚本没有帮助,因为它只显示高级概述。

非常感谢您提供的任何信息,

0 投票
1 回答
182 浏览

django - 移植到 Django,支持遗留用户数据库

我正在将我的网站从原始 php 移植到 Django。我使用 inspectdb 为现有数据库创建模型。出现的问题是,早些时候我注册用户并将他们的密码保存为 md5 哈希 md5($pass) 并且 Django 不支持这个 md5 版本。

有没有一种方法可以支持我的旧用户数据库,并为新用户使用支持用户配置文件的强大 Django 用户模型?

0 投票
1 回答
148 浏览

ruby-on-rails-3 - 新的 Rails 应用程序从旧表中提取一些数据

我有一个新的 Rails 应用程序,它需要从一个名为“Doo_dad”的旧表中访问数据,它有一个名为“id”的自动递增主键和一个名为“name”的字符串字段。

所以我创建了一个名为app/models/doodad.rb的新模型文件,如下所示:

当我加载 Rails 控制台时,我可以访问 Rails 生成的模型,但看不到类

app/models/doodad.rb中的类 Doodad没有被加载。这段代码很好,因为当我执行以下操作时:

即当我在app/models/doodad.rb的内容中进行猴子修补时,一切都很好,并且名为“Uno”的 Doodad 被保存到数据库中。

如何让 Rails 加载连接到旧表的模型类?

0 投票
0 回答
350 浏览

oracle - 旧数据库混合主键和外键:更新错误“该属性是对象的键信息的一部分,无法修改”

考虑下表:

表详细信息具有从列 nr 到列 nr 的外键。两个表都映射到具有主数据库键作为实体键的实体。Master 和 Detail 之间存在一对多的关系。

当我在 EF 上下文中添加一个具有单个详细信息的 master 并调用 SaveChanges 时,master 中的 nr 字段由数据库中的触发器确定,返回给 EF,写入 details.nr 属性并保存在 details 表中。干得好,EF!

但是,当我尝试更新详细信息实体中的一个详细信息字段并调用 SaveChanges 时,我收到错误消息“属性 'Nr' 是对象的关键信息的一部分,无法修改。” 显然 EF 试图从相关的 Master 更新 Nr 字段。当然,哪个没有修改。

解决此限制的最佳方法是什么?添加新的实体键字段并更改主键列不是一种选择。

免责声明:我手工编写代码以专注于这个问题,它可能无法编译,但我希望你明白这一点。

更新:我认为(希望...)问题已解决。如果我将 Detail 实体中的 SCN 字段设置为 ConcurrencyMode=Fixed 和 StoreGeneratedPattern=Computed,则会出现有关 Nr 字段的错误消息。如果我将 SCN 字段设置为 ConcurrencyMode=Fixed 和 StoreGeneratedPattern=None,则 SaveChanges 将返回而不会出现错误。

0 投票
1 回答
1066 浏览

java - Grails 项目:用于遗留数据库映射的 Gorm 或 JPA/Hibernate 注释?

在一个 grails 应用程序中,我必须创建一堆映射到一个非常旧的数据库的 grails 域类。

这个非常古老的数据库正在为表和列使用许多“时髦”的不可读名称。
这些表包含(太)经常(太多)列。

我正在考虑对所有关系使用静态映射,并为列名使用 JPA 注释(几乎所有列都需要重命名,映射部分将是大象)

这种混合是可能的吗?
如果是,这是我必须避免的事情吗?

0 投票
1 回答
581 浏览

ruby-on-rails - 处理 Ruby ActiveRecord 中的列转换

在处理旧数据库时,我遇到了 SQL Server 数据库中的一列,其中日期以小数形式存储。例如 2011-04-23 存储为 20110423.0。

是否有处理“奇怪”列存储约定的通用 ActiveRecord 机制?它们实际上存储为整数的类似枚举的列是另一种可能也使用相同机制的情况,但我无法完全找到我正在寻找的内容。

似乎序列化让我部分到达了那里:

但是,幻觉很薄。该列不“知道”它是存储为小数的日期。例如比较失败:

0 投票
1 回答
730 浏览

ruby-on-rails-3 - Rails3 和 ActiveRecord 与旧数据库:JOIN 不返回其他表列

我有一个旧数据库,其中包含两个不同的表(tbl_players 和 tbl_player_ratings),它们在公共列(player_key)上相互链接。

我的问题:使用 Rails3,当我尝试检索加入 Players 的 PlayersRatings 时,只返回来自 PlayerRatings 的列。但是,如果我在 mysql 命令行中执行相同的 SQL 查询,则会返回两个表中的列。

为简单起见,我在此仅提供每个表中的几列。

tbl_players

tbl_player_ratings

代表这些表的 Rails 类如下所示:

我在 rails 控制台中运行的查询:

这将返回一个没有任何 Player 字段的唯一 PlayerRating。

上述 rails 命令产生的 SQL:

当我在 mysql 命令行中执行该确切命令时,两个表中的所有列都会返回。

为什么 Rails 和 ActiveRecord 不一样(返回两个表中的所有列)?

0 投票
1 回答
20142 浏览

sql-server-2008 - 使用 MS-SQL Server 设置 Liquibase

我在我们的 MVC3 SQL Server 2008 项目中使用 Liquibase (www.liquibase.org) 来管理数据库迁移/更改。但是,我遇到了第一个障碍:连接到 Microsoft SQL Server 实例。

我正在查看 liquibase 站点上的快速入门教程,但是将 mysql 交换为 sql server DB

我运行这个命令:

并收到此错误:

我尝试添加 --classpath 指向 sqljdbc 驱动程序,但没有成功。

如何使用 liquibase 创建或更新 MS-SQL Server 数据库?

0 投票
1 回答
1207 浏览

c# - NHibernate,将空引用值在 DB 中保存为 0(零)

我发现这个 tuplizer 示例在保存空关系时可以保存 0。这是必需的,因为我正在使用旧数据库架构上的应用程序。

我在这里尝试了tuplizer:http: //nhforge.org/blogs/nhibernate/archive/2011/01/28/how-to-use-0-instead-of-null-for-foreign-keys.aspx

在该示例中,我得到了 ProxyFactory 的 nullreferenceexception。然后我在这里找到了代码的更新:https ://bitbucket.org/jfromaniello/hotgazpachoeg/changeset/87ac41c473ae

但是,这对我也不起作用。在最后一个方法 SetPropertyValues (描述为脏 hack 3,从 DB 读取对象时使用),我在这部分得到 nullref 异常,如果(typeof(IEntity),当读取不相关的对象(不是样本)时

我的映射如下(简化):

如果不存在此类对象,则 parentSampleID 列必须为 0。

我想,我只需要在插入和更新(可能在我的情况下只有插入)上做一些肮脏的黑客攻击。

在插入时,我想创建一个假代理,但 [2] 中的代码从数据库加载实体(可能使用 Null 对象?!)。

插入脏黑客:

我尝试创建一个假代理而不是执行上述操作:

然后我在 ctor 中设置的 _sessionfactory 上得到一个 nullref 异常:

任何想法如何做到这一点?