问题标签 [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 回答
754 浏览

grails - 带有遗留数据库的 grails。外键作为主键的一部分

我遇到了使用旧数据库的问题。我有两个与关系相关的表:一个 - 到 - 多: 表订阅者:

表订阅者联系方式:

表 SUBSCRIBERSCONTACTS 具有复合主键 - (SUBSCRIBERCODE, CONTACTTYPE, ORDER_ID)。它还具有对 SUBSCRIBERS (SUBSCRIBERCODE) 的外键引用。SUBSCRIBERCODE 是 SUBSCRIBERSCONTACTS 主键的一部分。

我创建了两个 GORM 域类:

我生成了所有必需的:grails generate-all *.

然后我尝试运行新的 grails 应用程序并出现异常:

我不想将subscribercode 属性添加到Subscriberscontacts 域类,因为如果这样做,我将在Create 表单上获得subscribercode 编辑字段。

0 投票
1 回答
146 浏览

ruby-on-rails - 具有复杂遗留模式的 Rails 开发/测试开发策略

在使用现有应用程序正在使用的遗留模式开发 Rails 应用程序时,如果表在整个模式中对外部 id 列具有 NOT NULL 约束,为了创建/保存模型以进行测试,这些关联需要存在模型,以及它们的关联等。因此,根据需要一次创建一个模型并使用它进行测试并不容易。

就测试而言,如果您使用 FactoryGirl 并且想要创建和保存模型实例以从控制器返回等,这似乎是一个问题,当涉及所有关联依赖项时。另一种选择是模拟,但模拟可能会花费更多时间,并且它不允许您轻松进行集成测试。另一种是使用固定装置,但这些固定装置既费时又脆弱。另一种方法是使用生产数据预先填充测试数据库,但这并不能解决测试中对工厂等/已知数据的需求,Rails 通常希望从测试环境的干净数据库开始。

当你有一个现有的复杂模式时,你会使用什么策略来开发模型、测试等,并且你正在将 Rails 应用程序连接到 - 不仅用于读取数据,还用于写入现有产品正在使用的现有模式应用?(即“海上重造”问题)

0 投票
0 回答
115 浏览

ruby-on-rails - RoR 遗留数据库 - 关联崩溃系统关闭

我正在努力使用具有旧数据库的 Ruby on Rails 应用程序。它通常可以工作,但现在我试图显示在数据库中创建的关联。

两个相关的脚手架称为repobuild

repo has many builds- 所以我的repo_id构建表中有一个外键。

问题如下:

  • repo/7在浏览器中调用正在工作
  • 通话repo/7/builds/8也有效
  • 但是如果我打电话给repo/7/builds我的系统崩溃了;)

此外,我可以在 rails 控制台中做到这一点而不会出现任何问题,例如:

--> 返回属于 id 7 的 repo 的所有构建

有谁知道这里出了什么问题?提前致谢!

0 投票
3 回答
383 浏览

mysql - 将旧文本数据库转换为 SQL

在我的办公室,我们有一个遗留的会计系统,它将所有数据存储在具有固定宽度记录的纯文本文件(TXT 扩展名)中。每个数据文件都被命名为例如 FILESALE.TXT。我的目标是将这些数据带入我们的 MySQL 服务器,以供许多其他无法与旧版软件交互的程序只读使用。每个文件本质上是一个表。

我总共需要访问大约 20 个文件,大约 1gb 的总数据。每行可能有 350-400 个字符宽并且有 30-40 列。拉入数据后,没有一个 MySQL 表比 100mb 大得多。

遗留会计系统可以修改文本文件中的任何行,删除旧行(它有一个已删除的记录标记——0x7F),并随时添加新行。

几年来,我每 5 分钟运行一次 cron 作业:

  1. 检查每个数据文件的最后修改时间。
  2. 如果文件没有被修改,跳过它。否则:
  3. 解析数据文件,清理所有问题(仅非常简单的检查),然后输出我需要的列的制表符分隔文件(我只是忽略了一些列)。
  4. 截断表并将新数据导入我们的 MySQL 服务器,如下所示:

    /li>

cron 脚本并行运行每个文件检查和解析,因此整个更新过程并不需要很长时间。最大的表(不经常更改)需要大约 30 秒来更新,但大多数表需要不到 5 秒的时间。

这一直工作正常,但存在一些问题。我猜它会混淆数据库缓存,所以每次我必须 TRUNCATE 和 LOAD 一个表时,其他使用 MySQL 数据库的程序一开始很慢。此外,当我切换到并行运行更新时,数据库可能会在几秒钟内处于稍微不一致的状态。

这整个过程似乎效率低下!有没有更好的方法来解决这个问题?关于可能值得研究的优化或程序的任何想法?遇到类似情况的人有什么巧妙的技巧吗?

谢谢!

0 投票
1 回答
2241 浏览

ruby-on-rails - 如何在 Rails 中使用 LEGACY 数据库?

我在一个 Rails 网站上工作,该网站介绍股票共同基金和 ETF。我已经有一个单独的 Ruby 脚本,它每晚运行并使用这些共同基金和 ETF 的数据填充 Postgres 数据库。

Rails 教程的第 6 章并不是我想要的。我正在尝试做的与 Rails 教程第 6 章所做的不同之处在于: 1. 在我的 Rails 站点中,不需要创建数据库,因为它已经被填充。所以我认为我不需要使用“rails generate”或“rake db:migrate”。(或者我错了吗?) 2. 我的 Rails 站点只读取数据,不添加、删除或编辑数据。

0 投票
4 回答
1581 浏览

ruby-on-rails - 如何优雅地处理 ActiveRecord 中的“Mysql2::Error: Invalid date”?

我正在一个遗留数据库上构建一个 Rails 3.2 应用程序,该数据库在不同的表中也有一些损坏的记录。最令人头疼的问题之一是它包含无效日期。

我设置了一个沙箱,我手动修复了一次以使我的代码正常工作。现在是部署的时候了。出于这个原因,沙箱每晚都会重置并从实时数据库中复制,重新构建 ferret 索引,并重新应用迁移。我们将经常部署到沙箱,以便在部署到实时设置之前进行最后的修复。

由于旧的 PHP 应用程序和这个新的 Rails 应用程序需要并行运行几周到几个月,我们不能简单地一次性修复日期(更新:只是为了澄清,这意味着它们同时在同一个数据库上运行时间)。我需要一种方法来自动化这个,也许是迁移或 rake 任务(我会选择后者)。

但问题是:ActiveRecord 无法加载此类记录,因此我无法通过 ruby​​ 代码中的一些硬编码假设来调查记录并修复日期。

第二个问题是遗留数据库存在不一致,因为 PHP 代码没有使用事务,并且一些代码路径被破坏,留下孤立和破坏的表约束。我会在它们发生时处理它们,其中大部分已经在模型中得到处理。第一个问题与日期有关。

你通常会如何解决这个问题?也许甚至还有一些神奇的宝石,它支持通过拦截异常和运行一些尝试修复代码来迁移记录损坏的遗留数据库......

迁移路径使用 MySQL 和三个生产环境(使用实时数据库的稳定环境、使用相同数据库的暂存环境以及每晚重置数据库克隆的沙箱)。我们决定不进行一次性数据映射/迁移,因为我们无法一步替换完整的遗留应用程序(它由一个包含大约 50000 篇文章、数百个主题、包含图像和下载的巨大文件数据库的 CMS 组成,支持大约 10 个网站,大约 12 年的数据和工作,来自不同编程技能的凌乱 PHP 代码,来自不同迁移阶段的重复代码,从合作伙伴站点提取 RSS 内容以将那里的文章/帖子混合到我们自己应用程序主题中的文章时间线中,以及更多有趣的东西...

第一步是迁移后端应用程序以获得一致的管理和发布界面。遗留的前端应用程序仍然需要写入数据库(访问者创建的评论和其他内容)。因此,修复数据库的过程必须能够定期在无人​​值守的情况下运行。

我们已经修复了可以优雅地处理 belongs_to 和 has_many 中损坏的模型依赖关系的修复程序。回形针集成旨在与发明的所有奇妙的文件名映射一起使用。airbrake gem 会向我们的 redmine 安装报告所有应用程序崩溃,因此我们可以快速了解所有剩余的怪癖。

旧版应用程序已经过修改以使用最新的 MySQL 版本,并已迁移到当前的 MySQL 数据库服务器。

0 投票
1 回答
716 浏览

java - 如何使用 Hibernate 表示遗留数据库?

我有以下遗留数据库结构和内容:

我想将其表示如下并利用一个名为“用户”的实体,以便我可以抽象出遗留结构的复杂性:

我使用数据库中的视图做到了这一点,但我无法使用此视图进行更新。有没有办法使用 Hibernate 来表示遗留结构,这样我也可以更新?

0 投票
1 回答
5967 浏览

sql-server - 如何在 Rails 中连接到 MS SQL

我正在尝试将遗留数据从 MS SQL 数据库迁移到我的 Rails 应用程序中。我在 freetds 中添加了正确连接的配置。在我的 Gemfile 中,我分别添加了tiny_tdsactiverecord-sqlserver-adapter

我创建了一个文件来存放遗留数据库中的类以转换为 ActiveRecord:

数据库.yml

然后我有 rake 任务来转换数据:

遗产.rake

在这一点上,我只是想让 rake 任务“连接”到旧数据库。

当我尝试'rake users'时,我得到:

在我看来,我已经明确指定了适配器。配置它的正确方法是什么?

另外作为一个附带问题,在我的旧数据库表的“类”文件中,所有这些表都应该反映“新”Rails 数据库模式吗?理想情况下,我希望能够简单地连接到遗留数据库中的各种表,并在需要时将它们放入新的数据库模式中。旧的关联与新的不匹配,命名约定也不匹配。

任何帮助表示赞赏。谢谢。

更新

仍然遇到此错误。可悲的是,我能找到的唯一有相同错误的线程是 database.yml 文件中的奇数间距问题。所以我实际上花时间检查并确保所有间距都与我的其他配置相匹配。鉴于这是一个模糊的错误,我什至不确定在设置 activerecord-sqlserver-adapter 的说明之后要检查什么。

0 投票
2 回答
589 浏览

database-migration - 用于 RoundHouse 的改造数据库

我正在考虑让我们的数据库进入源代码控制。我找不到任何关于改造现有数据库以与 rh 一起使用的最佳方法的信息。

我可以看到创建的表,我是否应该将它们编写脚本并将它们添加到我们的数据库中,然后事情将从那里开始?或者我应该得到一个 db 并使用 restore 标志运行 rh 吗?似乎应该有一些指导方针。

如果您有任何见解,请告诉我。

谢谢

0 投票
2 回答
142 浏览

ruby-on-rails - Rails 4 oracle 增强型适配器多对多将数据传播到数据透视表

第一件事

使用:

  • 导轨4
  • oracle 增强型适配器 rails4 分支

我在现有数据库上映射了多对多关系。我的模型如下所示:

我的投票页面的静态页面控制器

投票观点:

参赛者/字段部分:

表单现在提交给事件控制器PATCH

我如何注册一个EntrantEvent只将数据添加到中间模型EventMap,因为Event它将始终存在?

我是否需要accepts_nested_attributes_for在我的模型中包含跨表传播更改(我无法从文档中弄清楚这是做什么的)?我是否需要通过Entrant表单发送额外的参数来更新EventMap

主要目标:我想要一个参赛者可以注册现有活动的表格!