Я пытаюсь создать таблицу, используя схему установки, но она выдает ошибку, указанную ниже. Установка схемы ... SQLSTATE [HY000]: Общая ошибка: 1005 Невозможно создать таблицу magento
. questionanswer
(errno:150 «Неправильно сформировано ограничение внешнего ключа»), запрос был: СОЗДАЙТЕ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ questionanswer
(question_id
int NULL КОММЕНТАРИЙ «ID вопроса», answer_id
int NULL КОММЕНТАРИЙ «ИД ответа», ПЕРВИЧНЫЙ КЛЮЧ (question_id
, answer_id
), ИНДЕКС QUESTIONANSWER_ANSWER_ID
(answer_id
), ОГРАНИЧЕНИЕ QUESTIONANSWER_QUESTION_ID_FAQQUESTION_QUESTION_ID
ИНОСТРАННЫЙ КЛЮЧ (question_id
) ССЫЛКИ faqquestion
(question_id
) НА УДАЛЕННЫЙ КАСКАД, ОГРАНИЧЕНИЕ QUESTIONANSWER_ANSWER_ID_FAQANSWER_ANSWER_ID
ИНОСТРАННЫЙ КЛЮЧ (answer_id
) ССЫЛКИ faqanswer
(answer_id
) НА УДАЛИТЬ КАСКАД) КОММЕНТАРИЙ = 'Вопрос к ответу Таблица связей' ENGINE = INNODB charset = utf8 COLLATE = utf8_general_ci.
Мой код из installschema для таблиц:
// Creating Question table
$table = $installer->getConnection()->newTable(
$installer->getTable('faqquestion')
)->addColumn(
'question_id',
\Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
null,
['nullable' => false, 'primary' => true],
'Question ID'
)->addColumn(
'question',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'2M',
['nullable' => true,'default' => null],
'Question'
)->addColumn(
'question_identifier',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'Identifier'
)->addColumn(
'question_topic',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'Topic'
)->addColumn(
'question_sortorder',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'SortOrder'
)->addColumn(
'question_status',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Question Status'
)->addColumn(
'question_visibility',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Question Visibility'
)->addColumn(
'question_tags',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'Tags'
)->setComment(
'Question Table'
);
$installer->getConnection()->createTable($table);
//creating answer table
$table = $installer->getConnection()->newTable(
$installer->getTable('faqanswer')
)->addColumn(
'answer_id',
\Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
null,
['nullable' => false, 'primary' => true],
'Answer ID'
)->addColumn(
'answer',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'2M',
['nullable' => true,'default' => null],
'Answer'
)->addColumn(
'answer_likes',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Likes'
)->addColumn(
'answer_dislikes',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Dislikes'
)->addColumn(
'answer_author',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'Author'
)->addColumn(
'answer_status',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
1,
['nullable' => false,'default' => 0],
'Answer Status'
)->setComment(
'Answer table'
);
$installer->getConnection()->createTable($table);
// queston and related answer table
$table = $installer->getConnection()->newTable(
$installer->getTable('questionanswer')
)->addColumn(
'question_id',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
null,
['nullable' => true, 'primary' => true],
'Question ID'
)->addColumn(
'answer_id',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
null,
['nullable' => true, 'primary' => true],
'Answer ID'
)->addIndex(
$installer->getIdxName('questionanswer', ['answer_id']),
['answer_id']
)->addForeignKey(
$installer->getFkName('questionanswer', 'question_id', 'faqquestion', 'question_id'),
'question_id',
$installer->getTable('faqquestion'),
'question_id',
\Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
)->addForeignKey(
$installer->getFkName('questionanswer', 'answer_id', 'faqanswer', 'answer_id'),
'answer_id',
$installer->getTable('faqanswer'),
'answer_id',
\Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
)->setComment(
' Question to aNswer Linkage Table'
);
$installer->getConnection()->createTable($table);