Django syncdb no SQL dados iniciais usando rendimentos do PostgreSQL “coluna ... não existe”

StackOverflow https://stackoverflow.com/questions/1449984

  •  11-09-2019
  •  | 
  •  

Pergunta

Plataforma: Python 2.5, Django desenvolvimento radicular, PostgreSQL 8.4, o Windows Vista Ultimate SP2. Procedimento: Documentação Django, Release 1.0, texto do link , Artigo 34.2, fornecendo dados SQL iniciais.

código:

models.py:  

class aisc_customary(models.Model):
    MTYPE                 = models.CharField(max_length=4, editable=False, 
                                help_text="Shape type, e.g. W, C, L, etc.")
    EDI_STD_NOMENCLATURE  = models.CharField(max_length=26, editable=False, 
                                help_text="EDI shape designation")
    AISC_MANUAL_LABEL     = models.CharField(max_length=26, editable=False, primary_key=True, 
                                help_text="AISC Manual label")
    T_F                   = models.CharField(max_length=1, editable=False, 
                                help_text="Special note flag, T or F")
    W                     = models.FloatField(editable=False, 
                                help_text="Nominal weight, lbs/ft")
... (45 more FloatFields)


application1/sql/aisc_customary.sql:  

    INSERT INTO application1_aisc_customary (MTYPE, EDI_STD_NOMENCLATURE, AISC_MANUAL_LABEL, T_F, W, A, D, HT, OD, BF, B, ID, TW, TF, T, TNOM, TDES, KDES, KDET, K1, X, Y , E0, XP, YP, BF_2TF, B_T, H_TW, H_T, D_T, IX, ZX, SX, RX, IY, ZY, SY, RY, RZ, J, CW, C, WNO, SW, QF, QW, RO, H, TAN_ALPHA, QS) VALUES ('W', 'W44X335', 'W44X335', 'F', 335, 98.5, 44.0, 0, 0, 15.9, 0, 0, 1.03, 1.77, 0, 0, 0.00, 2.56, 2.63, 1.31, 0.00, 0.00, 0.00, 0.00, 0.00, 4.50, 0.00, 38.0, 0.00, 0.00, 31100, 1620, 1410, 17.8, 1200, 236, 150, 3.49, 0.00, 74.7, 535000, 0.00, 168, 1180, 278, 805, 0.00, 0.00, 0.00, 0.00);
    INSERT INTO application1_aisc_customary (MTYPE, EDI_STD_NOMENCLATURE, AISC_MANUAL_LABEL, T_F, W, A, D, HT, OD, BF, B, ID, TW, TF, T, TNOM, TDES, KDES, KDET, K1, X, Y , E0, XP, YP, BF_2TF, B_T, H_TW, H_T, D_T, IX, ZX, SX, RX, IY, ZY, SY, RY, RZ, J, CW, C, WNO, SW, QF, QW, RO, H, TAN_ALPHA, QS) VALUES ('W', 'W44X290', 'W44X290', 'F', 290, 85.4, 43.6, 0, 0, 15.8, 0, 0, 0.865, 1.58, 0, 0, 0.00, 2.36, 2.44, 1.25, 0.00, 0.00, 0.00, 0.00, 0.00, 5.02, 0.00, 45.0, 0.00, 0.00, 27000, 1410, 1240, 17.8, 1040, 205, 132, 3.49, 0.00, 50.9, 461000, 0.00, 166, 1040, 248, 701, 0.00, 0.00, 0.00, 0.00);
    INSERT INTO application1_aisc_customary (MTYPE, EDI_STD_NOMENCLATURE, AISC_MANUAL_LABEL, T_F, W, A, D, HT, OD, BF, B, ID, TW, TF, T, TNOM, TDES, KDES, KDET, K1, X, Y , E0, XP, YP, BF_2TF, B_T, H_TW, H_T, D_T, IX, ZX, SX, RX, IY, ZY, SY, RY, RZ, J, CW, C, WNO, SW, QF, QW, RO, H, TAN_ALPHA, QS) VALUES ('W', 'W44X262', 'W44X262', 'F', 262, 76.9, 43.3, 0, 0, 15.8, 0, 0, 0.785, 1.42, 0, 0, 0.00, 2.20, 2.25, 1.19, 0.00, 0.00, 0.00, 0.00, 0.00, 5.57, 0.00, 49.6, 0.00, 0.00, 24100, 1270, 1110, 17.7, 923, 182, 117, 3.47, 0.00, 37.3, 405000, 0.00, 165, 928, 223, 630, 0.00, 0.00, 0.00, 0.00);

... (1965 more lines like this)

servidor de desenvolvimento Django funciona bem e servidor PostgreSQL é trabalhando e respostas consultas sobre dados de outros modelos quando o arquivo de dados inicial problemático é removido do seu caminho padrão.

Com as versões anteriores do mesas ruins caiu usando pgAdmin III, console de comando "python manage.py syncdb" produz este erro:

Criando application1_aisc_customary mesa Instalando SQL personalizada para o modelo application1.aisc_customary Falha ao instalar o SQL personalizada para o modelo application1.aisc_customary: coluna "mtype" da relação "application1_aisc_customary" não existe LINHA 1: INSERT INTO application1_aisc_customary (MTYPE, EDI_STD_NOME ...

Um quilate aponta para o M de MTYPE. O erro não obstante, coluna (maiúsculas) MTYPE faz existir, como pode ser visto usando pgAdmin III. Note que Django administrador relata a mesa, mas não tem registros.

Eu tentei unicode e codificação ANSI para o SQL, tendo editável = False fora os atributos do modelo, e os nomes em minúsculas para tudo, mas os atributos do modelo. Talvez eu estou faltando alguma instrução SQL preparatório. Eu estou golpeando para fora. Eu ficaria extremamente grato por uma resposta esclarecedora. Agradecemos antecipadamente a sua ajuda.

09/21/09: Para o registro, a resposta de Zalew está correto. são necessários os nomes de campo minúsculas. Eu também tive que mudar um nome de campo, id (diâmetro interno) para i_d a fim de corrigir o evidente conflito com a chave primária. Mudei od para o_d para corresponder. Problema resolvido.

Foi útil?

Solução

Eu corri um teste, com o mesmo resultado como você. U deve usar nomes de campo minúsculas assim que funciona. No entanto, u não tem que reescrever o sql, pode deixar maiúscula no sql, tendo em minúsculas na definição do modelo e ele vai funcionar muito bem! o que é estranho, porque os nomes das colunas PGSQL são maiúsculas de minúsculas. Por outro lado, o Django não vai deixar você tem dois campos - uma minúscula e uma maiúscula com o mesmo nome (provavelmente bloqueada devido a vários sistemas db Django funciona com), então ... ainda estranha :)

Não é possível encontrar todos os detalhes de fundo sobre esta questão embora. Basta seguir a convenção minúsculas. Editar os campos do modelo para baixar e executar o seu sql.

Outras dicas

Hmm. Tiro no escuro, talvez o seu costume SQL está sendo executado antes de a tabela é criada através do comando syncdb?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top