php - Symfony Doctrine i18n 行为数据加载失败 : Integrity constraint violation

标签 php mysql symfony1 doctrine mysql-error-1062

我想要 I18N 类别表。我关注了jobeet example .

下面的架构和固定数据。

./symfony doctrine:build --db --all-classes --and-migrate
./symfony doctrine:data-load data/fixtures/category.yml

当我运行这些命令时,没有数据被插入到数据库中,并显示失败的红框:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-et' for key 'PRIMARY'

在数据加载任务上执行的查询(使用“mysqld --log=logfile”记录):

1 Query DELETE FROM my_category
2 Query START TRANSACTION
3 Query SELECT k.id AS k__id, k.position AS k__position FROM my_category k ORDER BY k.position desc LIMIT 1
4 Query INSERT INTO my_category (gender, position, created_at, updated_at) VALUES ('female', '1', '2011-01-14 12:33:05', '2011-01-14 12:33:05')
5 Query SELECT k.id AS k__id, k.lang AS k__lang, k.slug AS k__slug FROM my_category_translation k WHERE (k.slug LIKE 'name-value%' AND k.lang = 'et' AND k.name = 'Name value')
6 Query INSERT INTO my_category_translation (id, lang, name, seeking_label, seeking, slug) VALUES ('1', 'et', 'Name value', 'Label value', 'Value', 'name-value')
7 Query SELECT k.id AS k__id, k.lang AS k__lang, k.slug AS k__slug FROM my_category_translation k WHERE (k.slug LIKE '%' AND k.lang = 'et_EE' AND k.name IS NULL)
8 Query INSERT INTO my_category_translation (id, lang, slug) VALUES ('1', 'et_EE', '')
9 Query rollback
10 Quit 

当我在新构建的数据库上手动运行这些命令时。上面 3 到 6 的查询运行良好并插入数据。 查询编号7 不输出数据和查询nr。 8是失败的。 (因为id 1已经存在,在第6步插入)。

问题一定在查询 nr 中。 7. "k.lang = 'et_EE'"我很确定它应该是 'et'? 为什么查询nr。 7 is neccessary 似乎与查询 nr 完全一样。 5 但没有和/或搞乱了值(value)观?

我遇到了什么问题还是错误?

架构.yml

myCategory:
  actAs:
    Timestampable: ~
    Sortable:      ~
    I18n:
      fields:       [name, seeking_label, seeking]
      actAs:
        Sluggable:
          fields:   [name]
          uniqueBy: [lang, name]
          builder:  [mySluggableTranslit, urlize]
  columns:
    name:          { type: string(255), notnull: true }
    gender:        { type: string(6)   }
    seeking_label: { type: string(255) }
    seeking:       { type: string(255) }

数据/fixtures/category.yml

myCategory:
  category-1:
    gender: female
    position: '1'
    Translation:
      et:
        name: 'Name value'
        seeking_label: 'Label value'
        seeking: 'Value'

最佳答案

默认情况下,i18n 表中 culture 字段的长度为 2。 如果要使用长文化代码,则必须将其更改为 5。否则,“et_EE”将被截断为“et”。

I18n:
  fields:       [name, seeking_label, seeking]
  length: 5

参见:http://www.doctrine-project.org/documentation/manual/1_0/en/behaviors#core-behaviors:i18n

关于php - Symfony Doctrine i18n 行为数据加载失败 : Integrity constraint violation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4690681/

相关文章:

mysql - MySQL更新查询奇怪的行为

forms - 在Symfony中启用CSRF的功能测试表

ajax - 在 AJAX 表单加载的文本区域中使用 "Updated WMD Editor"

MySQL 自定义计算 View

php - symfony + Doctrine 帮助

php - 如何在 PHP 中使用箭头函数?

php - 在 PHP 中计算数组中元音的数量

php - 网页设计PHP SQL查询问题

php - MySQL根据两列选择前五个唯一行

php - PHP 数组中带有条件的 if 语句