GVKun编程网logo

在Rails迁移(MySQL)中,您可以指定新列应位于的位置吗?

9

在本文中,我们将详细介绍在Rails迁移的各个方面,并为您提供关于MySQL中,您可以指定新列应位于的位置吗?的相关解答,同时,我们也将为您带来关于MySQLRails迁移错误:“重命名schema_

在本文中,我们将详细介绍在Rails迁移的各个方面,并为您提供关于MySQL中,您可以指定新列应位于的位置吗?的相关解答,同时,我们也将为您带来关于MySQL Rails迁移错误:“重命名schema_migration时出错(错误号:-1)”、mysql – 我可以在Rails .where()中使用Regex吗?、MySQL:您可以指定一个随机限制吗?、ruby-on-rails – Docker rails迁移的有用知识。

本文目录一览:

在Rails迁移(MySQL)中,您可以指定新列应位于的位置吗?

在Rails迁移(MySQL)中,您可以指定新列应位于的位置吗?

如果要通过MySQL添加列,则可以使用AFTER修饰符指定该列在表中的位置。但是,如果我通过Rails迁移执行add_column,则该列将在表的末尾创建。

Rails迁移有任何功能来指定添加列的位置吗?

答案1

小编典典

现在可以在Rails 2.3.6+中通过传递:after参数来实现

https://rails.lighthouseapp.com/projects/8994/tickets/3286-patch-add-support-
for-mysql-column-positioning-to-
migrations

对于没有看到使用此功能的优点的每个人:您是否从未在ORM之外查看数据库?如果我在任何类型的UI中查看,我都喜欢将外键,状态列,标志等内容组合在一起。这不会影响应用程序,但肯定会加快我查看数据的能力。

MySQL Rails迁移错误:“重命名schema_migration时出错(错误号:-1)”

MySQL Rails迁移错误:“重命名schema_migration时出错(错误号:-1)”

我是一个PHP开发人员,我是Rails的新手,但是进展顺利,一切似乎都非常简单.但是,直到今天早上,我一直在使用sqlite,并决定将自己构建的内容移至MysqL. rake db:create可以完美地工作,但是当我尝试rake db:migrate时,出现以下错误:

rake aborted!
MysqL::Error: Error on
rename of
‘./test_development/schema_migrations’
to ‘./test_development/#sql2-c7b-c’
(errno: -1): CREATE UNIQUE INDEX
unique_schema_migrations ON
schema_migrations (version)

考虑到迁移脚本中可能存在错误,我使用最简单的表创建了一个干净的Rails项目,并得到了相同的错误.因此,我重新安装了MysqL和MysqL gem,以确保它们都没有问题,并且我仍然没有运气.这是我正在运行的版本:

>导轨2.3.4
> Ruby 1.8.6
> MysqL 5.1.40
> MysqL Gem 2.8.1

我觉得这可能与InnoDB有关,因为在此框上,我对该引擎有问题.但是,如果有人可以帮助我,我将不胜感激,因为它阻止了我前进.

谢谢,

基兰

更新:
根据Phil的要求,结果如下:

SHOW ENGINE INNODB STATUS

SHOW VARIABLES LIKE ‘innodb%’

解决方法:

您已将innodb_force_recovery选项设置为6.这可能已从默认值0更改为解决早期问题.在此模式下,InnoDB除了SELECT,CREATE TABLE和DROP TABLE外,将不提供任何其他功能.

尝试关闭MysqL,然后编辑my.cnf文件.将innodb_force_recovery设置为0(或删除该选项),然后重新启动MysqL.

mysql – 我可以在Rails .where()中使用Regex吗?

mysql – 我可以在Rails .where()中使用Regex吗?

我有一个菜单,显示各种艺术家的第一个字母:

A B C D E F …

它基本上是一种通过名字的第一个字母过滤许多艺术家的方法.

问题有些以符号,数字或除[a-z]之外的任何东西开头.

所以我想要它

#A B C D E F …

但是我如何使用where子句来完成这项工作呢?

filter_letter = (params[:letter] =~ /[a-z]/i ? params[:letter] : "something_here" )

@artists = Artist.where("name LIKE ?", "#{filter_letter}%")

解决方法:

由于您使用的是MysqL,因此可以利用它对正则表达式的支持.您需要切换到RLIKE运算符并相应地调整操作数.

例如,使用现有结构,您可以使用以下内容

filter_letter = (params[:letter] =~ /[a-z]/i ? params[:letter] : "[^a-z]" )
@artists = Artist.where("name RLIKE ?", "^#{filter_letter}")

有关更多信息,请参见http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html.请特别注意,MysqL正则表达式不区分大小写,因此您无需担心该问题.

MySQL:您可以指定一个随机限制吗?

MySQL:您可以指定一个随机限制吗?

有没有一种方法可以随机化SQL(MySQL)中的限制数?

我想做的是在查询中获得随机结果的数量,以在没有任何服务器端脚本的情况下用于插入子查询中。我希望能够以假设的方式运行的查询是:

SELECT id FROM users ORDER BY RAND() LIMIT RAND() * 1000

当然这是行不通的,但是还有另一种方法来随机化限制数吗?有许多将有限的结果随机化的示例,但是我在网上找不到有关设置随机限制的任何信息。

答案1

小编典典

这个怎么样:

    SELECT *       FROM users     ORDER BY RAND()     HAVING RAND() * 1000 < 10

该子句WHERE RAND() * 1000 < 10随机选择以1%的概率包括每一行。它不是一个LIMITvariable子句,但会做大致相同的事情。

ruby-on-rails – Docker rails迁移

ruby-on-rails – Docker rails迁移

我正在尝试使用docker和fig运行我的rails应用程序,它依赖于redis服务器,mongodb,postgres和Nginx,
这是我的fig.yml的样子:

pg:
  image: docker-index.my.com/postgres
  ports:
    - 5432
redis:
  image: docker-index.my.com/redis
  ports:
    - 6379
mongodb:
  image: docker-index.my.com/mongodb
  ports:
    - 27017
app:
  build: .
  command: bundle exec rails s
  volumes:
    - .:/beesor
  ports:
    - 3000:3000
  links:
    - pg
    - redis
    - mongodb
  environment:
    RAILS_ENV: production

一切正常,直到启动应用程序的时刻,因为rails初始化程序挂钩在服务器上启动然后我得到有关数据库连接的错误,数据库不存在!当然因为它不是在Dockerfile上创建的(见下文)

Dockerfile内容:

# DOCKER-VERSION 0.10.0
FROM docker-index.my.com/ruby:1.9.3
MAINTAINER my.com

RUN apt-get update -qq && apt-get install -y git-core xvfb curl nodejs libqt4-dev libgtk2.0-0 libgtkmm-3.0-1 libnotify4 sqlite3 libsqlite3-dev graphicsmagick imagemagick subversion libpq-dev libxml2-dev libxslt-dev git build-essential
RUN mkdir /my_app
workdir /my_app

RUN gem install bundler

ADD Gemfile /my_app/Gemfile
ADD Gemfile.lock /my_app/Gemfile.lock
RUN bundle install
RUN bundle pack --all
ADD . /my_app

我没有看到我可以放置rake db的地方:创建db:migrate db:seed命令!,如果我把它们放在Dockerfile的末尾然后当无意中尝试构建app它抱怨数据库服务器没有退出,(在fig构建app容器的时候,其他容器没有启动),我无法修复这个改变fig.yml上的顺序,
我在这里面临鸡蛋问题,我能让这个人工作吗?

我确信所有链接都能完美运行,所以问题更多的是编写脚本编排.

解决方法

找到了解决方案!:

我创建了一个rake任务来包装我需要的东西,它运行迁移,种子,并启动rails服务器,所以修复是通过这个更改图上的命令:

命令:rake my_app:setup

关于在Rails迁移MySQL中,您可以指定新列应位于的位置吗?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于MySQL Rails迁移错误:“重命名schema_migration时出错(错误号:-1)”、mysql – 我可以在Rails .where()中使用Regex吗?、MySQL:您可以指定一个随机限制吗?、ruby-on-rails – Docker rails迁移等相关知识的信息别忘了在本站进行查找喔。

本文标签: