php – drupal 7自定义架构错误datetime
发布时间:2020-12-13 17:39:46 所属栏目:PHP教程 来源:网络整理
导读:我有以下架构(从自定义模块中的 schema module(7.x-1.0-beta3)现有表生成. function myproject_entities_schema() {// ---------------------------------------------------------------------------------// MESSAGE// ----------------------------------
我有以下架构(从自定义模块中的
schema module(7.x-1.0-beta3)现有表生成.
function myproject_entities_schema() { // --------------------------------------------------------------------------------- // MESSAGE // --------------------------------------------------------------------------------- $schema['myproject_entity_message'] = array( 'description' => 'The base table for myproject message instances','fields' => array( 'id' => array( 'description' => 'The primary identifier for a message instance','type' => 'serial','unsigned' => TRUE,'not null' => TRUE,),'weekendday' => array( 'description' => 'Whether this message gets send on a weekendday(1) or on a workday(0)','type' => 'int','size' => 'tiny','default' => 0,'day' => array( 'description' => 'Numbered day of campaign schedule','content' => array( 'description' => 'Message content','type' => 'text','time_to_send' => array( 'description' => 'When the message should arrive at the user','type' => 'datetime','campaign_fk' => array( 'description' => 'the foreign key of the campaign this message belongs to','not null' => FALSE,'user_id' => array( 'description' => 'The user id this message is generated for','pool_id' => array( 'description' => 'The pool node id this message was generated from','message_template_id' => array( 'description' => 'The node id of the message template this message was generated from','primary key' => array('id'),'indexes' => array( 'CAMPAIGN' => array('campaign_fk'),'MESSAGE_TEMPLATE' => array('message_template_id'),'POOL' => array('pool_id'),'USER' => array('user_id'),); // --------------------------------------------------------------------------------- // CAMPAIGN // --------------------------------------------------------------------------------- $schema['myproject_entity_campaign'] = array( 'description' => 'The base table for myproject campaigns instances','fields' => array( 'id' => array( 'description' => 'The primary identifier for a campaign instance','schedule' => array( 'description' => 'The schedule of the campaign in text format.','interruptible' => array( 'description' => 'Whether this campaign is interruptible or not','campaign_template_id' => array( 'description' => 'Node id of campaign template this instance was created from','product_fk' => array( 'description' => 'Primary key of product instance this campaign belongs to','indexes' => array( 'CAMPAIGN_TEMPLATE' => array('campaign_template_id'),'PRODUCT' => array('product_fk'),); // --------------------------------------------------------------------------------- // PRODUCT // --------------------------------------------------------------------------------- $schema['myproject_entity_product'] = array( 'description' => 'The base table for myproject product instances','fields' => array( 'id' => array( 'description' => 'The primary identifier for a product instance','start' => array( 'description' => 'Time when the campaign started','current_campaign_fk' => array( 'description' => 'Foreign key of currently running campaign instance','next_campaign_fk' => array( 'description' => 'Foreign key of campaign instance to run next','indexes' => array( 'CURRENT' => array('current_campaign_fk'),'NEXT' => array('next_campaign_fk'),); return $schema; } 当我尝试安装模块并因此创建模式时,我总是得到以下通知(我不认为是失败的主要原因): Notice: Undefined index: datetime:normal in DatabaseSchema_mysql->processField() (line 200 of /Users/xxx/Repos/myproject/includes/database/mysql/schema.inc). 并出现以下错误: PDOException: 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 'NOT NULL COMMENT 'When the message should arrive at the user',`campaign_fk` IN' at line 6: CREATE TABLE {myproject_entity_message} ( `id` INT unsigned NOT NULL auto_increment COMMENT 'The primary identifier for a message instance',`weekendday` TINYINT NOT NULL DEFAULT 0 COMMENT 'Whether this message gets send on a weekendday(1) or on a workday(0)',`day` INT NOT NULL COMMENT 'Numbered day of campaign schedule',`content` TEXT NOT NULL COMMENT 'Message content',`time_to_send` NOT NULL COMMENT 'When the message should arrive at the user',`campaign_fk` INT unsigned NULL DEFAULT NULL COMMENT 'the foreign key of the campaign this message belongs to',`user_id` INT unsigned NOT NULL COMMENT 'The user id this message is generated for',`pool_id` INT unsigned NOT NULL COMMENT 'The pool node id this message was generated from',`message_template_id` INT unsigned NOT NULL COMMENT 'The node id of the message template this message was generated from',PRIMARY KEY (`id`),INDEX `CAMPAIGN` (`campaign_fk`),INDEX `MESSAGE_TEMPLATE` (`message_template_id`),INDEX `POOL` (`pool_id`),INDEX `USER` (`user_id`) ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'The base table for myproject message instances'; Array ( ) in db_create_table() (line 2684 of /Users/xxx/Repos/myproject/includes/database/database.inc). 我在架构定义中搜索了错误但找不到任何错误.另外,我没有看到sql语句究竟出了什么问题. 我的服务器设置是: 有人看到这里有什么不对吗? 解决方法
我认为您需要使用datetime:normal作为日期时间列类型的键.
'time_to_send' => array( 'description' => 'When the message should arrive at the user','type' => 'datetime:normal', 除此之外,您可以尝试明确地将列类型指定为MySQL DATETIME: 'time_to_send' => array( 'description' => 'When the message should arrive at the user','mysql_type' => 'DATETIME', 问题似乎源于是否在Drupal 7中实际允许DATETIME;看到this discussion的详细信息比我在这里可以容纳的更多:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |