waka / activerecord-mysql-unsigned

Enable to use the "unsigned" option in the integer type for migrating of ActiveRecord
MIT License
31 stars 12 forks source link

`change_column` is not working #19

Closed winebarrel closed 9 years ago

winebarrel commented 9 years ago

こんにちは。 日本語で失礼します。

先ほど、v0.3.0のソースをgithubから落としてbundle rake rakeを実行したのですが、change_columnが正しく動いていないように見えます。

具体的には、以下の箇所でSQL文を標準出力に出したところ https://github.com/waka/activerecord-mysql-unsigned/blob/25feeb0fc5b3a3872ea16a7cc77dae6d6f0af95f/spec/support/migrations.rb#L53

-- change_column(:users, :id, :integer, {:limit=>8, :unsigned=>true, :null=>false, :auto_increment=>true})
D, [2014-11-24T01:59:46.458223 #2196] DEBUG -- :    (0.2ms)  ALTER TABLE `users`
   -> 0.0027s
-- change_column(:users, :will_unsigned_int, :integer, {:unsigned=>true})
D, [2014-11-24T01:59:46.461271 #2196] DEBUG -- :    (0.2ms)  ALTER TABLE `users`
   -> 0.0030s
-- change_column(:users, :will_signed_int, :integer, {:unsigned=>false})
D, [2014-11-24T01:59:46.465085 #2196] DEBUG -- :    (0.2ms)  ALTER TABLE `users`
   -> 0.0037s
-- change_column(:users, :will_bigint, :integer, {:limit=>8})
D, [2014-11-24T01:59:46.468309 #2196] DEBUG -- :    (0.2ms)  ALTER TABLE `users`
   -> 0.0031s
-- add_column(:users, :added_unsigned_int, :integer, {:unsigned=>true})
D, [2014-11-24T01:59:46.468919 #2196] DEBUG -- :    (0.2ms)  ALTER TABLE `users`

上記のようにALTER文が正常に実行されておらず、テーブルの定義を見ても型の変更は行われていませんでした。

v0.2.0のソースで上記の箇所をログ出力すると

-- change_column(:users, :id, :integer, {:limit=>8, :unsigned=>true, :null=>false, :auto_increment=>true})
D, [2014-11-24T02:02:14.542172 #2310] DEBUG -- :    (17.6ms)  ALTER TABLE `users` CHANGE `id` `id` bigint unsigned NOT NULL AUTO_INCREMENT
   -> 0.0204s
-- change_column(:users, :will_unsigned_int, :integer, {:unsigned=>true})
D, [2014-11-24T02:02:14.558033 #2310] DEBUG -- :    (12.6ms)  ALTER TABLE `users` CHANGE `will_unsigned_int` `will_unsigned_int` int(10) unsigned DEFAULT NULL
   -> 0.0158s
-- change_column(:users, :will_signed_int, :integer, {:unsigned=>false})
D, [2014-11-24T02:02:14.584018 #2310] DEBUG -- :    (22.8ms)  ALTER TABLE `users` CHANGE `will_signed_int` `will_signed_int` int(4) DEFAULT NULL
   -> 0.0259s
-- change_column(:users, :will_bigint, :integer, {:limit=>8})
D, [2014-11-24T02:02:14.598764 #2310] DEBUG -- :    (11.1ms)  ALTER TABLE `users` CHANGE `will_bigint` `will_bigint` int(8) DEFAULT NULL
   -> 0.0147s
-- add_column(:users, :added_unsigned_int, :integer, {:unsigned=>true})
D, [2014-11-24T02:02:14.619403 #2310] DEBUG -- :    (20.3ms)  ALTER TABLE `users` ADD `added_unsigned_int` int(10) unsigned
   -> 0.0206s

正常にALTER文が発行されていることが確認できました。

テストの実行環境は以下の通りです。

$ ruby -v
ruby 2.0.0p594 (2014-10-27 revision 48167) [x86_64-darwin13.4.0]
$ bundle list
Gems included by the bundle:
  * activemodel (4.1.8)
  * activerecord (4.1.8)
  * activerecord-mysql-unsigned (0.2.0)
  * activesupport (4.1.8)
  * arel (5.0.1.20140414130214)
  * builder (3.2.2)
  * bundler (1.7.4)
  * database_cleaner (1.3.0)
  * diff-lcs (1.2.5)
  * i18n (0.6.11)
  * json (1.8.1)
  * minitest (5.4.3)
  * mysql2 (0.3.17)
  * rake (10.3.2)
  * rspec (3.0.0)
  * rspec-core (3.0.4)
  * rspec-expectations (3.0.4)
  * rspec-mocks (3.0.4)
  * rspec-support (3.0.4)
  * thread_safe (0.3.4)
  * tzinfo (1.2.2)
$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 5.5.40-log Source distribution

私の勘違いでしたら大変申し訳ないのですが、ご確認いただければ幸いです… :bow: