2017-05-22 4 views
0

내가장고 마이그레이션 rawSQL : 당신의 SQL 구문에 오류가 있지만, SQL은

operations = [ 
    migrations.CreateModel(
     name='Mileage', 
     fields=[ 
      ('id', models.AutoField(auto_created=True, primary_key=True, 
            serialize=False, verbose_name='ID')), 
      ('miles', models.DecimalField(max_digits=8, decimal_places=1)), 
      ('start_location', models.CharField(max_length=255)), 
      ('end_location', models.CharField(max_length=255)), 
     ], 
    ), 
    migrations.CreateModel(
     name='Trip', 
     fields=[ 
      ('id', models.AutoField(auto_created=True, primary_key=True, 
            serialize=False, verbose_name='ID')), 
      ('start_location', models.CharField(max_length=255)), 
      ('end_location', models.CharField(max_length=255)), 
      ('trip_date', models.DateTimeField(verbose_name='trip date')), 
     ], 
    ), 
    migrations.RunSQL('mymileages.sql'), 
] 

mymileages.sql 파일은 다음과 같습니다 내 장고 앱이 보이는 매우 작은 마이그레이션 (MySQL의 백엔드)가 정확한지 :

INSERT INTO `mileage_mileage` (`miles`, `start_location`, `end_location`) VALUES 
(3.7, 'Location 1', 'Location A'), 
(2.4, 'Location 2', 'Location B'), 
(4.3, 'Location 3', 'Location C'); 

마이그레이션 외부에서 해당 SQL을 실행할 수 있으며 아무 문제없이 잘 작동합니다. - 내가 잘못 이것에 대해가는 다른 사람들이 지적했다

Programming error: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'mymileages.sql' at line 1")

+0

나는 django에 익숙하지 않지만 RunSQL은 mymileages.sql 파일 내에서 올바른 쿼리가 아닌'mymileages.sql'을 쿼리로 사용한다고 생각합니다. –

+0

bro 마이그레이션은 테이블을 만드는 데 사용됩니다. 마이그레이션 파일을 통해 삽입하는 방법은 무엇입니까? – Exprator

답변

0

으로 : 나는 그러나 마이그레이션을 실행하면

, 그것은 나에게 오류를 제공합니다.

이후로 조명기를 추가했으며 데이터 가져 오기에이 파일을 사용합니다.

먼저 테이블에 데이터를 추가해야했습니다 (SQL 파일을 수동으로 실행하여 해당 테이블에 추가했습니다).

그럼 내가 다음

loaddata

로드 내 고정물을 만들어

manage.py dumpdata mileage.mileage --indent 2 --format=json --output initial_mileages.json

를 실행하고 아름답게 수입.