Rails 3.2 と共に PostgreSQL を使用しています。私のデータベース移行の1つには次のものがあります:
execute <<-SQL
CREATE INDEX users_multi_idx
ON users (lower(left(fname, 1)), fname)
WHERE deleted_at IS NULL;
SQL
一部のデータベースで移行中に、次のエラーが発生します。
== AddFnameIndexToUsers: migrating ===========================================
-- execute(" CREATE INDEX users_multi_idx\n ON users (lower(left(fname, 1)), fname)\n WHERE deleted_at IS NULL;\n")
rake aborted!
An error has occurred, this and all later migrations canceled:
PG::Error: ERROR: function left(character varying, integer) does not exist
LINE 2: ON users (lower(left(fname, 1)), fname)
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
: CREATE INDEX users_multi_idx
ON users (lower(left(fname, 1)), fname)
WHERE deleted_at IS NULL;
奇妙なのは、これがすべてのデータベースで発生するわけではなく、一部のデータベース (ステージング) だけで発生することです。このインデックスの実行の何が問題なのかについて何か提案はありますか?