2012-02-26 10 views
14

Estoy usando sqlite3 y pycharm para aprender más sobre django, y busqué en Google que sur se recomienda para facilitar la modificación de modelos después de que se han creado .dificultad para principiantes al usar south con pycharm - DatabaseError: no existe dicha tabla: south_migrationhistory

Intento seguir el consejo en http://south.aeracode.org/docs/tutorial/part1.html#starting-off.

El mayor éxito que he tenido hasta ahora es crear un modelo simple y ejecutar syncdb antes de agregar south a installed_apps. De esta forma, se crean las tablas iniciales y tengo la oportunidad de crear un súper usuario. (El administrador de Django parece preocuparse si no hay usuarios).

Luego añadir al sur de INSTALLED_APPS, y correr django_manage.py marcadores schemamigration --initial

parece que funciona bien. Se crea un nuevo directorio llamado migraciones con un par de archivos en la carpeta de mi aplicación y un mensaje alentador. "Creado 0001_initial.py Ahora puede aplicar esta migración con:. ./manage.py migrar marcadores"

El siguiente paso - django_manage.py" migrar marcadores genera el mensaje de error django.db.utils.DatabaseError : no hay tal tabla:. south_migrationhistory

pensé que la mesa sería creada en el primer paso schememigration ¿Qué me falta ¿alguien puede ayudar

Marg

Respuesta

0

respuesta en el similar question:.??

Run syncdb to add the Django and South tables to the database.

27

South usa una tabla propia para realizar un seguimiento de las migraciones que se han aplicado. Antes de poder aplicar migraciones, esto debe haberse creado usando python ./manage.py syncdb.

Además de configurar sur, a veces encontrará syncdb necesario para aplicaciones no sur en su proyecto, como el muy común django.contrib.auth.

Tenga en cuenta que para su conveniencia, puede ejecutar tanto de una sola vez como esto

python ./manage.py syncdb --migrate 
+0

Gracias jpic y KDT - ahora definitivamente tengo una mesa south_migrationhistory, e incluso recibo un mensaje de retroalimentación cuando ejecuté la migración sincronizada desde pychar Estoy diciendo que mi modelo se ha agregado a la migración (o palabras al respecto), pero ahora la pantalla de administración es un gran mensaje de bienvenida en blanco que me indica que cree una base de datos. – Marg

+0

refiriéndose a este tutorial oficial de South (http://south.readthedocs.org/en/latest/tutorial/part1.html#changing-the-model) 'python ./manage.py syncdb --migrate' debe sustituir: './manage.py schemamigration southtut --initial' y' ./manage.py migrate southtut' ¿estoy en lo cierto? – andi

2

Mi último esfuerzo (sin éxito) fue la siguiente

  1. Crear aplicaciones - db sincronía - superusuario creado
  2. Prueba de ejecución -admin pantalla muestra las tablas básicas
  3. Añadir al sur, y syncdb desde la línea de comandos con manage.py syncdb - south_migrationhistory tabl e creado Añadir la vainilla modelo básico
  4. probado varias combinaciones de -Gestionar syncdb manage.py, y schemamigration de PyCharm (si se ejecuta desde dentro de un directorio PyCharm migraciones se crea dentro de la aplicación - si se ejecuta desde la línea de comandos del directorio no lo hace parece ser creado.)
  5. pantalla de administración de Django muestra la tabla - pero si trato de editar la mesa se dice que no existe
  6. estructura de la base
  7. Comprobar mediante el navegador SQLite - mesa para el modelo de nueva creación no existe

estoy empezando a pensar que todo esto no vale la pena el tiempo que pierde molestia - tal vez estoy mejor simplemente modificando las tablas en el navegador SQLite

+1

Lo que estás tratando de hacer no es exótico ni complicado, y debería funcionar. Sugiero que trabajes en la línea de comando, deja PyCharm fuera de la ecuación hasta que esté funcionando. Una cosa para aclarar es que 'schemamigration' no toca su base de datos, solo genera los archivos .py en migraciones/- usted tiene que usar 'migrate' después de eso para actualizar realmente la base de datos. – kdt

+0

Gracias por aclarar que se requiere un proceso de dos pasos. – Marg

+1

Gracias por aclarar que se requiere un proceso de dos pasos. Ahora llego a la etapa de agregar el directorio de migraciones con schemamigration seguido de la primera migración, pero aún no está allí al hacer cambios en el modelo. Ejecutando schemamigration --auto parece reconocer con éxito el nuevo campo, y quiere que se proporcione un valor predeterminado, pero luego se produce la siguiente migración con el mensaje "django.db.utils.DatabaseError: table" bookmarks_link "already exists". Por supuesto que existe, es el que intento cambiar. Todavía me parece que me falta algo. – Marg

Cuestiones relacionadas