タグ

ブックマーク / qiita.com/kamipo (8)

  • MySQL 5.6からDATETIMEは小数点以下が四捨五入(round)されるので気を付けよう - Qiita

    MySQL 5.6からTIME, DATETIME, TIMESTAMPがマイクロ秒精度をサポートしました。 MySQL 5.6 Reference Manual :: 11.3.6 Fractional Seconds in Time Values で、ドキュメントにはちゃんとroundされるけどこれはSQL標準に従う挙動だからエラーとかワーニングは出ないよってさらっと書いてあるんですが、5.5では小数点以下は切り捨てだったんでマイクロ秒を付けてクエリ投げてた場合ハマりポイントになってます。 MySQL Bugs: #68760: Datetime rounding problem ActiveRecordにおけるDATETIMEのマイクロ秒サポート ここからはジョーカーさんのRails-4.2+MySQL-5.6での時刻オブジェクトのミリ秒の扱いについてへのアンサーエントリになるんです

    MySQL 5.6からDATETIMEは小数点以下が四捨五入(round)されるので気を付けよう - Qiita
    kamipo
    kamipo 2014/12/18
    18日目! #mysqlcasual
  • activerecord-mysql-awesome - ActiveRecordのMySQL向けパッチのバックポート集 - Qiita

    2014年12月12日現在、rails 4.2.0.rc2でもうすぐ4.2.0がリリースされそうですね! ここ最近MySQL向けパッチをいっぱいPRしたんですけど4.2.0には入れれなかったので、MySQL向けパッチを4.x向けにバックポートしたgemを作りました。 activerecord-mysql-awesome | RubyGems.org | your community gem host kamipo/activerecord-mysql-awesome とりあえず2014年12月12日現在では以下のパッチがバックポートされています。 Add SchemaDumper support table_options for MySQL. #17569 Add charset and collation options support for MySQL string and tex

    activerecord-mysql-awesome - ActiveRecordのMySQL向けパッチのバックポート集 - Qiita
    kamipo
    kamipo 2014/12/12
    12日目! #mysqlcasual
  • ActiveRecordでstrict_modeを無効にする - Qiita

    Rails 4.0からActiveRecordにstrict_modeが導入され、デフォルトでは接続時にsql_mode = STRICT_ALL_TABLESをセットするようになりました。 これは、既に運用されているDBに接続する等なんらかの理由でMySQL側で適切な設定が行えていない場合有用な動作ですが、そうでない場合、サーバー側の設定を鑑みずにクライアント側が設定を上書きするべきではないでしょう。 そのため、database.ymlでstrict: falseと設定することでこの動作を無効にすることができましたが、Rails 4.2.0ではこの動作が変更され、strict: falseのときはstrictでない状態にするためsql_mode = ''をセットするようになりました。 MySQLのデフォルトのsql_modeに依存して既に通っていたはずのテストが通らなかったりすることがあ

    ActiveRecordでstrict_modeを無効にする - Qiita
    kamipo
    kamipo 2014/10/27
    ActiveRecordでstrict_modeを無効にする on @Qiita
  • Rails - ActiveRecordでカラム毎にcharsetとcollationを指定する - Qiita [キータ]

    MySQLではカラム毎にcharsetとcollationを指定できるので、こういうMigrationファイルがあったときに class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string :email, charset: 'ascii', collation: 'ascii_bin', null: false t.string :password_digest, charset: 'ascii', collation: 'ascii_bin' t.timestamps end add_index :users, :email, name: "idx_email", unique: true end end CREATE TABLE `users` ( `id` int(1

    Rails - ActiveRecordでカラム毎にcharsetとcollationを指定する - Qiita [キータ]
    kamipo
    kamipo 2013/11/20
  • ActiveRecordをutf8mb4で動かす - Qiita

    もうMySQL 5.5 GAが出てから一年が経ち、MySQL 5.6 GAもそろそろ出るころだし、新規で作るアプリケーションはutf8mb4でいきたいのでその方法。 まず、mysql2が0.3.11以前のバージョンではutf8mb4に対応してないので、それより新しいバージョンを使う必要があります。 これでencoding: utf8mb4で接続できるようになります。 つぎにActiveRecord::Migrationでutf8mb4なデータベースを作成するようにコンフィグでcharsetとcollationを指定します。

    ActiveRecordをutf8mb4で動かす - Qiita
    kamipo
    kamipo 2012/11/13
    ActiveRecordをutf8mb4で動かす #MySQL #Rails
  • ActiveRecordでデフォルトの照合順序を変更する - Qiita

    MySQLには文字列の照合順序(collation)というのがあって、MySQL側でのcharset utf8のときのデフォルトの照合順序はutf8_general_ciです。 ActiveRecord::Migrationでは明示的に照合順序を指定しない場合、charset utf8で照合順序utf8_unicode_ciのデータベースを作成しますが、これは少なくとも日語圏では多くの人が期待する挙動ではないと思われるので注意が必要です。 たとえば、以下のようなファミリーテーブルをrake db:migrateすると # coding: utf-8 class CreateFamilies < ActiveRecord::Migration def change create_table :families do |t| t.string :name t.string :relation

    ActiveRecordでデフォルトの照合順序を変更する - Qiita
    kamipo
    kamipo 2012/11/12
    ActiveRecordでデフォルトの照合順序を変更する #MySQL #Rails / @frsyuki MySQLのcharset utf8のときのデフォルトのcollationはutf8_general_ciなのですけど、railsが無指定だとutf8_unicode_ciに上書きするので僕は毎回指定して使ってます
  • ActiveRecordでunsigned型をサポートしてないのが気になる - Qiita

    MySQLのほうから来た人だとidみたいなシーケンス値やhoge_countみたいなカウント保持するカラムはunsigned intで定義するのが普通な気がするのですが、ActiveRecord::Migrationではunsignedをサポートしていません。 かるく調べた限りだと、unsignedをサポートしてるのってMySQLぐらいらしく、PostgreSQLはサポートしてないしSQLite3はスキーマ定義のときにunsignedって書いてもエラーにならないけど完全に無視されてて余裕でマイナスの値を保持できてしまう。 そういう背景があってunsignedを扱いたいという要件はActiveRecordやRailsにおいてはエッジケースだという見解らしく、当面ActiveRecordでunsignedがサポートされる見込みはないのかもしれません。 そこで、activerecord-unsi

    ActiveRecordでunsigned型をサポートしてないのが気になる - Qiita
    kamipo
    kamipo 2012/10/09
    ActiveRecordでunsigned型をサポートしてないのが気になる #Ruby #Rails
  • ActiveRecordのデフォルトのインデックス名が長いのが気になる - Qiita

    たとえばActiveRecordでusersテーブルのemailカラムにインデックスを張ると、デフォルトのインデックス名がindex_users_on_emailみたいな冗長な名前になるのがうざいのでデフォルトはもっとすっきりさせることにする。 ActiveSupport.on_load :active_record do module ActiveRecord::ConnectionAdapters # simple index name module SchemaStatements def index_name_with_simple(table_name, options) if Hash === options && options[:column] Array.wrap(options[:column]) * '_and_' else index_name_without_si

    ActiveRecordのデフォルトのインデックス名が長いのが気になる - Qiita
    kamipo
    kamipo 2012/10/09
    ActiveRecordのデフォルトのインデックス名が長いのが気になる #Ruby #Rails
  • 1