問題は、私はに「テキスト」DataMapperの移行列は
これは私が見ていますエラーがあるが、列タイプを変更することはできませんということです〜/ Migration#1:create_person_tableを作成します。people
(id
シリアルプライマリキー、name
VARCHAR(2)、)ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci - > 0.0112s - > 0.0129s ==マイグレーションを実行する#2:change_name_constraints rak eが中止!初期化されていない定数SQL :: TableModifier :: Text /Users/Justin/Dropbox/Business/datamapper/playground/rakefile.rb:61:in `ブロック(3レベル) '(--traceでタスクを実行して完全なトレースを参照) 私がDataMapperをテストするために使用しているRakeスクリプト:https://gist.github.com/818143 はと思われるが、TableModifierクラス内のchange_columnメソッドは列変更ステートメントをMySQLに正しく変換していないようだ。他の一見関連したエラーは、列を長めの文字列に変換しようとすると、 DarkBook:Playground Justin $ rake migrate_up(/ Users/Justin/Dropbox/Business/datamapper/playground)〜移行の開始= =アップの実行移行#2:change_name_constraints
のALTER TABLE people
のALTER COLUMN name
TYPE文字列
〜あなたのSQL構文でエラーが発生しています。 1行目(コード:1064、SQLステート:42000、クエリ:ALTER TABLE people
、ALTER COLUMN name
TYPE String、uri:mysql:/)の「TYPE String」の近くで使用する正しい構文については、MySQLサーバのバージョンに対応するマニュアルを参照してください。 /root:@127.0.0.1datamapper_test)rake aborted! SQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が1行目の 'TYPE String'の近くで使用されるようにしてください。
/Users/Justin/Dropbox/Business/datamapper/playground/rakefile.rb:60:in`ブロック(2レベル)in '(完全なトレースは--traceでタスクを実行してください)
私がMySQLについて読んだことによると、「ALTER TABLE people
ALTER COLUMN name
TYPE String」は有効なMySQLクエリコマンドではありません。 TYPEはそこにあってはならず、StringはVARCHARに変換する必要があります。
change_columnメソッドの中を見ると、私が提供しているタイプのストレートパススルーです。これはおそらく私はおそらく私はchange_columnメソッドを直接呼び出すことになっていないと思っていますか?
私はこれを理解して、うまくいけば、DataMapperの移行APIを知っていることを文書化しています。