【问题标题】:Rails: where to put PRAGMA FOREIGNS KEYS = ON for SQLiteRails:在哪里放置 PRAGMA FOREIGN KEYS = ON for SQLite
【发布时间】:2014-08-08 17:48:11
【问题描述】:

我应该把 "PRAGMA FOREIGNS KEYS = ON;" 放在 rails 4.0 的什么地方?

我知道它是连接设置,所以我必须让 rails 在删除某些内容时将其放置,但我不知道将其放置在哪里。我在选项中的 database.yml 中尝试过,但它不起作用。谷歌搜索不到放在哪里。我希望它使级联删除工作。

【问题讨论】:

    标签: ruby-on-rails sqlite database-connection


    【解决方案1】:

    语法是这样的:

    drop table if exists db_name.table_name
    

    if 存在的地方和 db_name。零件是可选的。那里没有 CASCADE,因此 SQLite 在使用 DROP TABLE 时根本不支持 CASCADE,并且您无法添加它(当然,除非您想破解 SQLite C 源代码并自己添加它)。使用 SQLite 时必须接受某些限制,这就是其中之一。

    如果您想为 SQLite 和 MySQL 使用一个迁移,那么您必须检查正在使用哪个数据库并执行适当的 SQL 或找到在任何地方都可以使用的东西(即手动执行 CASCADE)。我现在能想到的检查您正在使用的数据库的简单方法是:

        case connection
        when ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
            # PostgreSQL things go here
        when ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
            # MySQL things go here
        when ActiveRecord::ConnectionAdapters::SQLiteAdapter
            # SQLite things go here
    
    ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-04
      • 2019-10-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      相关资源
      最近更新 更多