Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 21 July 2015 09:44

ecran64
Participant occasionnel
Date d'inscription: 18 Apr 2012
Messages: 49

Spatialite: erreur création primary et foreign key

Bonjour,

Pour différentes raisons, je ne peux pas utiliser PostGis, du coup, je me rabats sur Spatialite. Sauf, que Spatialite a quelques limites. Il n'est pas possible de définir une clé primaire après coup.
J'aimerai lier 2 tables (une géographique et l'autre non géographique contenant la description des éléments) en utilisant Foreign Key.
Par contre, lorsque je lance la procédure ci-dessous, j'ai un message d'erreur:

Code:

Une erreur est apparue lors de l'exécution du code Python :
Traceback (most recent call last):
  File "C:/Documents and Settings/XXXXXXX/.qgis2/python/plugins\QspatiaLite\QspatiaLiteApp.py", line 178, in runQuery
    header,data=self.db.executeQuery(query)
  File "C:/Documents and Settings/XXXXXXX/.qgis2/python/plugins\QspatiaLite\Classes\Database.py", line 51, in executeQuery
    cursor.execute(query,params)
IntegrityError: column C_SGE_15 is not unique

Version de Python :
2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)]
Version de QGIS :
2.8.2-Wien Wien, 1b929ef
Chemin vers Python : ['C:/Documents and Settings/XXXXXXX/.qgis2/python/plugins\\processing', 'C:/PROGRA~1/QGISWI~1/apps/qgis/./python', u'C:/Documents and Settings/XXXXXXX/.qgis2/python', u'C:/Documents and Settings/XXXXXXX/.qgis2/python/plugins', 'C:/PROGRA~1/QGISWI~1/apps/qgis/./python/plugins', 'C:\\PROGRA~1\\QGISWI~1\\bin\\python27.zip', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\DLLs', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\plat-win', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\lib-tk', 'C:\\PROGRA~1\\QGISWI~1\\bin', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\PIL', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\jinja2-2.7.2-py2.7.egg', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\markupsafe-0.23-py2.7-win32.egg', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\python_dateutil-2.2-py2.7.egg', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\pytz-2014.2-py2.7.egg', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\win32', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\Pythonwin', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\Shapely-1.2.18-py2.7-win32.egg', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\six-1.6.1-py2.7.egg', 'C:\\PROGRA~1\\QGISWI~1\\apps\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode', u'C:/Documents and Settings/XXXXXXX/.qgis2//python', 'C:\\Documents and Settings\\XXXXXXX\\.qgis2\\python\\plugins\\DigitizingTools\\tools', 'C:\\Documents and Settings\\XXXXXXX\\.qgis2\\python\\plugins\\mmqgis/forms', 'C:\\PROGRA~1\\QGISWI~1\\apps\\qgis\\python\\plugins\\fTools\\tools', 'C:/XXX/MAJ_TBE_REB']

Est-ce que certains savent d'où peut-venir l'erreur et comment je peux faire pour la création de primary key et foreign key ?
(sachant que le champ C_SGE_15 est unique et non nul dans la table tMAJ_TBE_REB_15_2 et servirait pour lier à la table géographique).

Mes commandes de création de table et remplissage:

Code:

CREATE TABLE 'tMAJ_TBE_REB_15_2' (
'C_SGE_09' TEXT,
'MODIF_15' INTEGER,
'TypModif15' TEXT,
'C_SGE_15' TEXT NOT NULL PRIMARY KEY,
'NOM_09' TEXT,
'NOM_15' TEXT,
'TBE_09'  INTEGER,
'TBE_15'  INTEGER,
'REB_09' INTEGER,
'REB_15' INTEGER,
'Espec_pres' TEXT,
'Obs_2009' TEXT,
'Obs_2015' TEXT)

INSERT INTO   "tMAJ_TBE_REB_15_1" (
'C_SGE_09',
'MODIF_15',
'TypModif15',
'C_SGE_15',
'NOM_09',
'NOM_15',
'TBE_09',
'TBE_15',
'REB_09',
'REB_15',
'Espec_pres',
'Obs_2009',
'Obs_2015')
SELECT 'C_SGE_09',
'MODIF_15',
'TypModif15',
'C_SGE_15',
'NOM_09',
'NOM_15',
'TBE_09',
'TBE_15',
'REB_09',
'REB_15',
'Espec_pres',
'Obs_2009',
'Obs_2015',
FROM  "Modifs_MAJ_TBE_REB_15"

Hors ligne

 

#2 Tue 21 July 2015 10:08

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: Spatialite: erreur création primary et foreign key

Bonjour,

Pour résumer tu créer une table, tu l'as rempli et la colonne C_SGE_15 a des valeurs uniques. Puis tu fais une jointure et hop une erreur que tu as indiquée plus haut s'affiche ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Tue 21 July 2015 10:34

ecran64
Participant occasionnel
Date d'inscription: 18 Apr 2012
Messages: 49

Re: Spatialite: erreur création primary et foreign key

C'est au moment de la remplir que j'ai ce message d'erreur, j’essaie de définir la colonne C_SGE_15 en clé primaire, sachant qu'elle n'a que des valeurs unique et non nulles. Ce que je ne comprends pas, c'est que d'après le message "IntegrityError: column C_SGE_15 is not unique" il a l'air de considéré qu'ils y a des valeurs non uniques...
Ensuite, oui, j'aimerais faire la jointe avec une autre table en utilisant cette colonne C_SGE_15... pour que quand je créé un formulaire dans Qgis, il aille piocher les éléments dans la table contenant les descriptions des objets.

Hors ligne

 

Pied de page des forums

Powered by FluxBB