Integrity constraint violation

124 views
Skip to first unread message

Kailash

unread,
May 27, 2009, 11:49:25 AM5/27/09
to symfony-es
Hola, estoy judando un poco con symfony para hacerme con el código. He
seguido hasta el final el tutorial de jobeet y ahora intentaba añadir
dos nuevas tablas (country y province) al código. El problema es que
me devuelve un error:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or
update a child row: a foreign key constraint fails (`job/province`,
CONSTRAINT `province_ibfk_1` FOREIGN KEY (`id`) REFERENCES `job`
(`province_id`))

Os adjunto el esquema utilizado para ver si detectais el error, pues
yo creo que está todo ok:

Category:
actAs:
Timestampable: ~
I18n:
fields: [name]
actAs:
Sluggable:
fields: [name]
uniqueBy: [lang, name]
columns:
name:
type: string(255)
notnull: true

Country:
actAs:
Sluggable:
fields: [name]
columns:
id:
type: integer
primary: true
autoincrement: true
name:
type: string(255)
notnull: true
unique: true
sort:
type: integer
notnull: true

Province:
actAs:
Sluggable:
fields: [name]
columns:
id:
type: integer
primary: true
autoincrement: true
country_id:
type: integer
primary: true
name:
type: string(255)
notnull: true
unique: true
sort:
type: integer
notnull: true
relations:
Country:
onDelete: CASCADE
local: country_id
foreign: id

Job:
actAs:
Timestampable: ~
columns:
category_id:
type: integer
notnull: true
country_id:
type: integer
notnull: true
province_id:
type: integer
notnull: true
type:
type: string(255)
company:
type: string(255)
notnull: true
logo:
type: string(255)
url:
type: string(255)
position:
type: string(255)
notnull: true
location:
type: string(255)
notnull: true
description:
type: string(4000)
notnull: true
how_to_apply:
type: string(4000)
notnull: true
token:
type: string(255)
notnull: true
unique: true
is_public:
type: boolean
notnull: true
default: 1
is_activated:
type: boolean
notnull: true
default: 0
email:
type: string(255)
notnull: true
expires_at:
type: timestamp
notnull: true
relations:
Category:
onDelete: CASCADE
local: category_id
foreign: id
foreignAlias: Jobs
Country:
onDelete: CASCADE
local: country_id
foreign: id
foreignAlias: Countries
Province:
onDelete: CASCADE
local: province_id
foreign: id
foreignAlias: Provinces

Affiliate:
actAs:
Timestampable: ~
columns:
url:
type: string(255)
notnull: true
email:
type: string(255)
notnull: true
unique: true
token:
type: string(255)
notnull: true
is_active:
type: boolean
notnull: true
default: 0
relations:
Categories:
class: Category
refClass: CategoryAffiliate
local: affiliate_id
foreign: category_id
foreignAlias: Affiliates

CategoryAffiliate:
columns:
category_id:
type: integer
primary: true
affiliate_id:
type: integer
primary: true
relations:
Category:
onDelete: CASCADE
local: category_id
foreign: id
Affiliate:
onDelete: CASCADE
local: affiliate_id
foreign: id

José Leonardo Diaz Ordoñez

unread,
May 28, 2009, 1:07:01 AM5/28/09
to symfo...@googlegroups.com
COn que comando te da el error "propel:build-all" ??

si es asi prueba ejecutando paso a paso cada uno.
- propel:build-model
- propel:build-sql    
- propel:insert-sql   (si es aqui, es problema en el esquema)
- propel:data-load tu_aplicacion   (si es aqui falta algun dato que referencia una clave primaria de otra tabla, revisa el archivo fixture.yml)
--
----------------------------------------------------------
José Leonardo Diaz Ordoñez
Ingeniero en Electrónica y Telecomunicaciones
Énfasis en Ingeniería Telemática.
Universidad del Cauca, Popayán -Colombia
2007

Kailash

unread,
May 29, 2009, 3:31:34 AM5/29/09
to symfony-es
Hola José,

A pesar de que no da error al hacer el paso insert-sql, es aquí donde
está generando la estructura mal, pues si intento insertar
directamente en base de datos un registro (primero en country para que
no salte error de referencias) y luego en province, me salta el
siguiente error:

Cannot add or update a child row: a foreign key constraint fails (`job/
province`, CONSTRAINT `province_ibfk_1` FOREIGN KEY (`id`) REFERENCES
`job` (`province_id`))

Debe haber algo en el esquema que genera mal la constraint¿?

Utilizo doctrine en lugar de propel.

On 28 mayo, 07:07, José Leonardo Diaz Ordoñez <ingleona...@gmail.com>
wrote:
> COn que comando te da el error "propel:build-all" ??
>
> si es asi prueba ejecutando paso a paso cada uno.
> - propel:build-model
> - propel:build-sql
> - propel:insert-sql   (si es aqui, es problema en el esquema)
> - propel:data-load tu_aplicacion   (si es aqui falta algun dato que
> referencia una clave primaria de otra tabla, revisa el archivo fixture.yml)
>

Kailash

unread,
May 29, 2009, 9:59:28 AM5/29/09
to symfony-es
Si, el problema es estructural, no se porque motivo, doctrine añade
una foreign key en la tabla province hacia job (además de la correcta
de job hacia province). ¿alguna idea de porque hace esto?

Gracias

Marcos Matamala

unread,
May 29, 2009, 10:33:50 AM5/29/09
to symfo...@googlegroups.com
El día 27 de mayo de 2009 11:49, Kailash <mane...@gmail.com> escribió:
[...]

> Province:
>  actAs:
>    Sluggable:
>      fields: [name]
>  columns:
>    id:
>      type: integer
>      primary:  true
>      autoincrement: true
>    country_id:
>      type: integer
>      primary: true

Una consulta por que country_id es primary ????

--
Marcos Matamala Fernández:
Analista Programador
Teléfono: 5235811

Kailash

unread,
May 29, 2009, 11:13:13 AM5/29/09
to symfony-es
eso... eso es lo que se me pasaba. Lo he mirado mil veces y no he
visto el error.

Gracias Marcos.

On 29 mayo, 16:33, Marcos Matamala
<marcos.analista.programa...@gmail.com> wrote:
Reply all
Reply to author
Forward
0 new messages