2010-09-15 5 views
0

Je pense que je suis proche de gâcher ma db sur Herokuprès de déconner mon db sur Heroku: erreur mysql db: tirer

Je suis en train de télécharger la base de données à distance sur Heroku par Heroku db: tirer

Je reçois le message suivant:

news_items: 100% | ================================ ========== | Heure: 00:00:01 /usr/lib/ruby/gems/1.8/gems/sequel-3.13.0/lib/sequel/adapters/mysql.rb:169:in `query ': Mysql :: Erreur: Dupliquer entry '3-Portfolio' pour la clé 'index_unique_user_plugins' (Sequel :: DatabaseError)

Est-ce qu'un ré-index résoudra ce problème ou suis-je en difficulté? Je pense comprendre que c'est mon db local (comme c'est mysql lançant l'erreur, tandis que heroku exécute PostgreSQL) qui se plaint, donc il semble y avoir quelques clés dupliquées dans un index (pas sûr de ce que cela signifie)

Répondre

3

Je crois que le problème est que PostgreSQL traite les chaînes comme sensibles à la casse, alors que MySQL les considère comme insensibles à la casse. Ceci s'applique également aux indices uniques. L'utilisateur 3 a probablement un plugin nommé "Portfolio" et "portfolio".

La solution la plus simple consiste à modifier votre index sur Heroku pour qu'il ne soit pas unique. Vous pouvez ensuite facilement l'importer dans MySQL. Alternativement, vous pouvez masser vos données un peu de sorte qu'il est toujours unique. Le moyen le plus simple d'accéder à la base de données sur Heroku est le . Enfin, et probablement la meilleure option, est d'utiliser PostgreSQL localement, donc votre environnement de développement correspond à votre environnement de production.

+0

Merci. C'est en fait le cas: j'ai 3-portfolio et 3-Portfolio dans mon db. Cela vient d'un plugin donc je ne sais pas comment ça s'est passé et si ça marche ou pas ... – faboolous

+0

Si vous voulez que toutes les chaînes soient uniques en ignorant le cas, ajoutez une contrainte d'unicité (par exemple changez votre index unique à) 'LOWER (plugin)'. – wuputah