Ok, it works pretty much like it should with one exception. The language value was set to 'und' for all entries, causing them to be empty in edit node although they were visible while viewing. If updated and saved again a new row would appear in the database (so now I had one with a language value of 'und' and one with 'pl' in my case) which in turn caused views to display duplicated results. I removed the duplicates and updated all rows to 'pl' manually fixing the problem, now all nodes can be edited with no problem. I believe this should be fixed so the language column gets filled properly.

CommentFileSizeAuthor
#2 lang_d6.png45.98 KBgnite
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

KarenS’s picture

The und part of the field is totally new in D7. How could you have migrated data with any value in the field other than the default?

I have not had time to try to understand how that new code works and don't have a site that uses translations to test on, so I don't know what, if any, changes need to be made.

gnite’s picture

FileSize
45.98 KB

Ok so I did a quick test - installed D6.20 in english with cck, created a field, upgraded to D7, migrated field and the above mentioned problem did in fact not exist. I noticed that there was no table 'languages' as I have on D6.20 with an additional language. Here is a screenshot of that table http://pliki.gnite.pl/lang_d6.png. If it were possible to check for that table and if present copy the 'prefix' of the 'enabled'=1 language into the 'language' field of D7's fields that should solve the problem. I also found a post from someone french having the same issue I had.

gnite’s picture

Title: D6 > D7 migration bug » D6 > D7 non-english migration bug
KarenS’s picture

Status: Active » Postponed (maintainer needs more info)

It is not at all clear to me what the problem is that we are trying to fix. You described a problem in the beginning of the issue, then in #2 you say that problem did not exist. So what exactly, *does* happen with the current code?

gnite’s picture

I'll try to explain better. In my second post i said the issue does not exist when NOT using additional languages, i.e. when installing just the original english. However if using another language the story is the following:

- the fields display fine while viewing nodes
- going to edit node and all the fields are blank, no values are shown here, like creating a new node
- entering them again and saving
- now they show both en view and edit, however
- now there are two entries in the database for that particular field in that particular node, basically there are duplicates one having the language 'und' and one having 'pl' in my case since I'm using polish
- that i turn causes the views module to return duplicated results for nodes that have those duplicated field entries
- manually replacing all und's with pl's solved the problem, now all the values show up in edit like they should without reentering them

conclusion: if not using english the language of the field needs to be set to the one in use.

One exception I found are image field which needed to remain 'und' to function, all the others were malfunctioning with 'und'.

KarenS’s picture

Status: Postponed (maintainer needs more info) » Active

Someone using translations needs to provide a patch that works for translations and I can confirm it works for sites that do not use translations.

FrequenceBanane’s picture

subscribe

cpelham’s picture

Here are two more instances of the problem, so I am somewhat confident now that there is a problem and that we have correctly diagnosed it:

http://drupal.org/node/1122062

cpelham’s picture

My sites use two languages so I cannot just write a sql command to replace all the "und" with "en" or another language. Some fields should be one language and some should be another, and since there can be thousands of fields, this needs to be correctly set programmatically during the conversion.

We first need to check for the language setting of the node to which the Drupal6 cck field is attached. I take it we would get the relevant node from the cck field row's nid column? Then we would query the row of i18n_node (if it's a node in question) with that nid and get the value from the language column? And finally we would write that language value to the corresponding language column in the new Drupal 7 field table?

I am only a novice programmer and I'm not sure where this should occur. In content_migrate.text.inc ?
I could possibly try writing the code to do that but it sounds not too difficult (if one knows what one is doing) and probably someone MUCH more qualified here could do it? I would be happy to test a patch if someone else could write one. If no one does soon, probably I'll try to figure it out...

cpelham’s picture

OK, i just tried changing all the language column values in one field table to "en" even though half the nodes are in another language to see if that might fix the problem anyway. The result is that for some of the nodes, the field contents display correctly on the node edit screen and for other node the field contents still do not get displayed. I don't yet see a reason for the disparity...

I believe that programming the patch is beyond my present capabilities. There must be thousands of multi-lingual sites out there that would like to upgrade to Drupal 7. Can no one step in and write this patch?

cpelham’s picture

Can this be accomplished by writing a mysql query directly in phpmyadmin? Here's what I have (for correcting one field for one language) but the syntax is wrong. Can someone correct it?

select nid, language from i18n_node;
if (i18n_node language = ja)
then
update field_data_field_instructor_or_artist set language = replace(language, 'und','ja') where field_data_field_instructor_or_artist nid = i18n_node nid

cpelham’s picture

Even with the language column set to 'en' and with tonight's latest dev versions of ctools, views, date, and calendar (and running update and emptying cache tables),

if i make a fresh (reverted) calendar view and then change the argument from posted date (which works correctly) to my date field which was upgraded via migrate content from D6 to D7, i get the following error:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS field_data_field_event_cck_date_2_ FROM node node LEFT JOIN field_data_field' at line 1

The query is:

SELECT node.title AS node_title, node.nid AS nid, node.language AS node_language, node.changed AS node_changed, field_data_field_event_cck_date_2.field_event_cck_date_2_value AS field_data_field_event_cck_date_2_field_event_cck_date_2_val, field_data_field_event_cck_date_2.field_event_cck_date_2_value2 AS field_data_field_event_cck_date_2_field_event_cck_date_2_val_1, field_data_field_event_cck_date_2. AS field_data_field_event_cck_date_2_
FROM
{node} node
LEFT JOIN {field_data_field_event_cck_date_2} field_data_field_event_cck_date_2 ON node.nid = field_data_field_event_cck_date_2.entity_id AND (field_data_field_event_cck_date_2.entity_type = :views_join_condition_0 AND field_data_field_event_cck_date_2.deleted = :views_join_condition_1)
WHERE (( (node.status = '1') AND (node.type IN ('event_cck')) )AND( (DATE_FORMAT(STR_TO_DATE(field_data_field_event_cck_date_2.field_event_cck_date_2_value, '%Y-%m-%dT%T'), '%Y-%m') = '2011-04') ))
LIMIT 10 OFFSET 0

The exported view is:


$view = new view;
$view->name = 'calendar';
$view->description = 'A multi-dimensional calendar view with back/next navigation.';
$view->tag = 'Calendar';
$view->base_table = 'node';
$view->human_name = '';
$view->core = 0;
$view->api_version = '3.0-alpha1';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Defaults */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->display->display_options['title'] = 'Calendar';
$handler->display->display_options['items_per_page'] = 0;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['style_plugin'] = 'calendar_nav';
/* Field: Content: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['title']['alter']['trim'] = 0;
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0;
$handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['title']['alter']['html'] = 0;
$handler->display->display_options['fields']['title']['link_to_node'] = 1;
/* Field: Content: Updated date */
$handler->display->display_options['fields']['changed']['id'] = 'changed';
$handler->display->display_options['fields']['changed']['table'] = 'node';
$handler->display->display_options['fields']['changed']['field'] = 'changed';
$handler->display->display_options['fields']['changed']['label'] = '';
$handler->display->display_options['fields']['changed']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['changed']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['changed']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['changed']['alter']['trim'] = 0;
$handler->display->display_options['fields']['changed']['alter']['word_boundary'] = 0;
$handler->display->display_options['fields']['changed']['alter']['ellipsis'] = 0;
$handler->display->display_options['fields']['changed']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['changed']['alter']['html'] = 0;
/* Contextual filter: Date: Date (node) */
$handler->display->display_options['arguments']['date_argument']['id'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['table'] = 'node';
$handler->display->display_options['arguments']['date_argument']['field'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['default_action'] = 'default';
$handler->display->display_options['arguments']['date_argument']['default_argument_type'] = 'date';
$handler->display->display_options['arguments']['date_argument']['default_argument_skip_url'] = 0;
$handler->display->display_options['arguments']['date_argument']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['date_argument']['year_range'] = '-3:+3';
$handler->display->display_options['arguments']['date_argument']['granularity'] = 'month';
$handler->display->display_options['arguments']['date_argument']['date_fields'] = array(
  'field_data_field_event_cck_date_2.field_event_cck_date_2_value' => 'field_data_field_event_cck_date_2.field_event_cck_date_2_value',
);
$handler->display->display_options['arguments']['date_argument']['date_method'] = 'OR';
$handler->display->display_options['arguments']['date_argument']['date_group'] = 'date';
/* Filter criterion: Content: Published */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Content: Type */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
  'event_cck' => 'event_cck',
);

/* Display: Calendar page */
$handler = $view->new_display('calendar', 'Calendar page', 'calendar_1');
$handler->display->display_options['items_per_page'] = 0;
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['style_plugin'] = 'calendar_nav';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['path'] = 'calendar';

/* Display: Calendar block */
$handler = $view->new_display('calendar_block', 'Calendar block', 'calendar_block_1');
$handler->display->display_options['items_per_page'] = 0;
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['style_plugin'] = 'calendar_nav';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['block_description'] = 'Calendar';

/* Display: Year view */
$handler = $view->new_display('calendar_period', 'Year view', 'calendar_period_1');
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '0';
$handler->display->display_options['style_options']['theme_style'] = '0';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['style_options']['max_items_behavior'] = 'more';
$handler->display->display_options['style_options']['groupby_times'] = 'hour';
$handler->display->display_options['style_options']['groupby_times_custom'] = '';
$handler->display->display_options['style_options']['groupby_field'] = '';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['displays'] = array(
  'calendar_1' => 'calendar_1',
  'default' => 0,
  'calendar_block_1' => 0,
);
$handler->display->display_options['attachment_position'] = 'after';
$handler->display->display_options['inherit_exposed_filters'] = TRUE;

/* Display: Month view */
$handler = $view->new_display('calendar_period', 'Month view', 'calendar_period_2');
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '0';
$handler->display->display_options['style_options']['theme_style'] = '0';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['style_options']['max_items_behavior'] = 'more';
$handler->display->display_options['style_options']['groupby_times'] = 'hour';
$handler->display->display_options['style_options']['groupby_times_custom'] = '';
$handler->display->display_options['style_options']['groupby_field'] = '';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['displays'] = array(
  'calendar_1' => 'calendar_1',
  'default' => 0,
  'calendar_block_1' => 0,
);
$handler->display->display_options['attachment_position'] = 'after';
$handler->display->display_options['inherit_exposed_filters'] = TRUE;

/* Display: Day view */
$handler = $view->new_display('calendar_period', 'Day view', 'calendar_period_3');
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '0';
$handler->display->display_options['style_options']['theme_style'] = '0';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['style_options']['max_items_behavior'] = 'more';
$handler->display->display_options['style_options']['groupby_times'] = 'hour';
$handler->display->display_options['style_options']['groupby_times_custom'] = '';
$handler->display->display_options['style_options']['groupby_field'] = '';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['displays'] = array(
  'calendar_1' => 'calendar_1',
  'default' => 0,
  'calendar_block_1' => 0,
);
$handler->display->display_options['attachment_position'] = 'after';
$handler->display->display_options['inherit_exposed_filters'] = TRUE;

/* Display: Week view */
$handler = $view->new_display('calendar_period', 'Week view', 'calendar_period_4');
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '0';
$handler->display->display_options['style_options']['theme_style'] = '0';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['style_options']['max_items_behavior'] = 'more';
$handler->display->display_options['style_options']['groupby_times'] = 'hour';
$handler->display->display_options['style_options']['groupby_times_custom'] = '';
$handler->display->display_options['style_options']['groupby_field'] = '';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['displays'] = array(
  'calendar_1' => 'calendar_1',
  'default' => 0,
  'calendar_block_1' => 0,
);
$handler->display->display_options['attachment_position'] = 'after';
$handler->display->display_options['inherit_exposed_filters'] = TRUE;

/* Display: Block view */
$handler = $view->new_display('calendar_period', 'Block view', 'calendar_period_5');
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '0';
$handler->display->display_options['style_options']['theme_style'] = '0';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['style_options']['max_items_behavior'] = 'more';
$handler->display->display_options['style_options']['groupby_times'] = 'hour';
$handler->display->display_options['style_options']['groupby_times_custom'] = '';
$handler->display->display_options['style_options']['groupby_field'] = '';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['displays'] = array(
  'calendar_1' => 0,
  'default' => 0,
  'calendar_block_1' => 'calendar_block_1',
);
$handler->display->display_options['attachment_position'] = 'after';
$handler->display->display_options['inherit_exposed_filters'] = TRUE;

/* Display: Upcoming */
$handler = $view->new_display('block', 'Upcoming', 'block_1');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['title'] = 'Upcoming';
$handler->display->display_options['defaults']['items_per_page'] = FALSE;
$handler->display->display_options['defaults']['use_more'] = FALSE;
$handler->display->display_options['use_more'] = TRUE;
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['pager']['options']['items_per_page'] = '5';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'list';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Field: Content: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['title']['alter']['trim'] = 0;
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0;
$handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['title']['alter']['html'] = 0;
$handler->display->display_options['fields']['title']['link_to_node'] = 1;
/* Field: Content: Updated date */
$handler->display->display_options['fields']['changed']['id'] = 'changed';
$handler->display->display_options['fields']['changed']['table'] = 'node';
$handler->display->display_options['fields']['changed']['field'] = 'changed';
$handler->display->display_options['fields']['changed']['label'] = '';
$handler->display->display_options['fields']['changed']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['changed']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['changed']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['changed']['alter']['trim'] = 0;
$handler->display->display_options['fields']['changed']['alter']['word_boundary'] = 0;
$handler->display->display_options['fields']['changed']['alter']['ellipsis'] = 0;
$handler->display->display_options['fields']['changed']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['changed']['alter']['html'] = 0;
$handler->display->display_options['defaults']['arguments'] = FALSE;
$handler->display->display_options['defaults']['filters'] = FALSE;
/* Filter criterion: Content: Published */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Date: Date (node) */
$handler->display->display_options['filters']['date_filter']['id'] = 'date_filter';
$handler->display->display_options['filters']['date_filter']['table'] = 'node';
$handler->display->display_options['filters']['date_filter']['field'] = 'date_filter';
$handler->display->display_options['filters']['date_filter']['operator'] = '>=';
$handler->display->display_options['filters']['date_filter']['expose']['operator'] = FALSE;
$handler->display->display_options['filters']['date_filter']['granularity'] = 'day';
$handler->display->display_options['filters']['date_filter']['form_type'] = 'date_select';
$handler->display->display_options['filters']['date_filter']['default_date'] = 'now';
$handler->display->display_options['filters']['date_filter']['default_to_date'] = '';
$handler->display->display_options['filters']['date_filter']['year_range'] = '-3:+3';
$handler->display->display_options['filters']['date_filter']['date_fields'] = array(
  'node.changed' => 'node.changed',
);
$handler->display->display_options['filters']['date_filter']['date_method'] = 'OR';
$handler->display->display_options['filters']['date_filter']['date_group'] = 'date';
$handler->display->display_options['block_description'] = 'Upcoming';
$translatables['calendar'] = array(
  t('Defaults'),
  t('Calendar'),
  t('more'),
  t('Apply'),
  t('Reset'),
  t('Sort by'),
  t('Asc'),
  t('Desc'),
  t('All'),
  t('Calendar page'),
  t('Calendar block'),
  t('Year view'),
  t('Month view'),
  t('Day view'),
  t('Week view'),
  t('Block view'),
  t('Upcoming'),
);
KarenS’s picture

Did some digging into this and it looks like the following happens on a fresh D7 install, so this is what we have to match:

1) If you do not have the Content Translation module enabled, all fields you create have a value of 'und' for the language.
2) If you enable the Content Translation module after you already have some fields created, all fields that previously used 'und' STILL have 'und'. All new fields you create will default to your site language.

I haven't tried an upgrade from a site that used translation in D6 to see if that does anything differently. And I don't know how we determine which is the right value to use in the migration.

cpelham’s picture

I believe we would want to set each field row's language value to equal the language value of the corresponding i18n_node table row. I am not sure how node revisions might affect this though, if at all.

cpelham’s picture

I cross-posted this to i18n, and Jose replied that CCK should take care of this and not i18n:

http://drupal.org/node/1072082#comment-4414250

Posted by Jose Reyero on May 1, 2011 at 1:43pm new
About node/fields language, I think cck should do the same as core upgrade scripts, which is setting the field language to the node language.

KarenS’s picture

Status: Active » Needs review

I committed a fix for this -- I added the language to the array of node values we retrieve and then populate the new field with that value.

This needs to be tested by someone with a multilingual site.

KarenS’s picture

Status: Needs review » Fixed

Actually I'm going to mark it fixed because as far as I can see it will behave properly. If someone with a multi-lingual site finds it does not, I'll need more information about exactly what did not end up correct.

blackdog’s picture

Status: Fixed » Active

As stated in #5:

One exception I found are image field which needed to remain 'und' to function, all the others were malfunctioning with 'und'.

This is an issue, see my issue: #1159862: Images in image fields doesn't show up after migrating

blackdog’s picture

One exception I found are image field which needed to remain 'und' to function, all the others were malfunctioning with 'und'.

This is also true for node reference fields it seems.

cpelham’s picture

I have found that another route to go with upgrading that is more work but potentially much cleaner is to make a new D7 site and then export your D6 nodes as CSV (or get them into CSV) and then create the content types anew in D7 and then import the data in using Feeds. Feeds appears to do a good job of creating nodes correctly. I haven't tested this workflow extensively yet but so far so good.

KarenS’s picture

@cpelham, if someone has hundreds of fields to create, that will be a time-consuming process. And not everyone wants to have to install and configure feeds (which is sometimes not for the faint of heart) to get their data migrated. But yes, we should note alternative ways to approach the problem.

@blackdog, do you have a multilingual site? That is what needs to be tested.

KarenS’s picture

Reading the other issue, blackdog has a non-multilingual, non-US site.

We may need to add a switch to add the language only for a multi-lingual site, or only on certain fields, but I have no idea which modules/fields alter the language value, and when. Really really need assistance from someone who understands how all this works.

KarenS’s picture

OK, more digging into this. If I Content Migrate creates fields without explicitly setting a the 'translatable' flag, they will get set to translatable = FALSE; If you create a field in the UI, it will always get set to 'translatable' = TRUE (there is no way to override that that I can see). If you use languages and the field is translatable, the field language will get set to whatever language. If the field is not translatable the language should get set to 'und'.

So the image and nodereference fields got created as non-translatable, and they want the 'und' value instead of the language.

There is a lot of inconsistency around how all this is handled in core. I need to figure out the right way to handle the migration.

KarenS’s picture

I created a core issue at #1164852: Inconsistencies in field language handling. There are definitely some core problems making this worse than it needs to be.

clemens.tolboom’s picture

KarenS’s picture

I have no idea with #25 has to do with this issue.

Based on the comments at #1164852: Inconsistencies in field language handling, I think I should revert my earlier change and set all migrated data to 'und', regardless of the language of the node. That is what I started out doing and I have lost track now of what problems that created. Anyone who has a problem with that course of action should jump onto that core issue and make yourself heard. I am going to do whatever they tell me to do there.