What is wrong with hook_schema()? function recipe_submit_schema() {
  $schema['recipe_submit'] = array(
    'description' =&gt; 'Recipe base table.',
    'fields' =&gt; array(
      'recipe_id' =&gt; array(
        'description' =&gt; 'Primary identifier for recipe.',
        'type' =&gt; 'serial',
        'unsigned' =&gt; TRUE,
        'not_null' =&gt; TRUE,
      ),
      'recipe_title' =&gt; array(
        'description' =&gt; 'Recipe Title.',
        'type' =&gt; 'varchar',
        'length' =&gt; 255,
        'default' =&gt; '',
      ),
      'author_name' =&gt; array(
        'description' =&gt; 'The author of the recipe.',
        'type' =&gt; 'varchar',
        'length' =&gt; 255,
        'default' =&gt; '',
      ),
      'author_email' =&gt; array(
        'description' =&gt; 'The author email.',
        'type' =&gt; 'varchar',
        'length' =&gt; 255,
        'default' =&gt; '',
      ),
      'recipe_description' =&gt; array(
        'description' =&gt; 'Recipe description.',
        'type' =&gt; 'text',
      ),
      'recipe_instructions' =&gt; array(
        'description' =&gt; 'Recipe instructions.',
        'type' =&gt; 'text',
      ),
      'recipe_ingredients' =&gt; array(
        'description' =&gt; 'Recipe ingredients.',
        'type' =&gt; 'text',
      ),
    ),
    'primary key' =&gt; array('recipe_id'),
  );

  return $schema;
}


gives me following error 

PDOException: SQLSTATE[42000]: Syntax error or access violation: 1171 All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead in /home/insasse/test_workspace/drupal7/includes/database/database.inc:2227                                                     [error]
Stack trace:
#0 /home/insasse/test_workspace/drupal7/includes/database/database.inc(2227): PDOStatement-&gt;execute(Array)
#1 /home/insasse/test_workspace/drupal7/includes/database/database.inc(697): DatabaseStatementBase-&gt;execute(Array, Array)
#2 /home/insasse/test_workspace/drupal7/includes/database/schema.inc(664): DatabaseConnection-&gt;query('CREATE TABLE {r...')
#3 /home/insasse/test_workspace/drupal7/includes/database/database.inc(2776): DatabaseSchema-&gt;createTable('recipe_submit', Array)
#4 /home/insasse/test_workspace/drupal7/includes/common.inc(7114): db_create_table('recipe_submit', Array)
#5 /home/insasse/test_workspace/drupal7/includes/module.inc(479): drupal_install_schema('recipe_submit')
#6 /home/insasse/.composer/vendor/drush/drush/commands/core/drupal/environment_7.inc(143): module_enable(Array)
#7 /home/insasse/.composer/vendor/drush/drush/commands/pm/pm.drush.inc(1167): drush_module_enable(Array)
#8 /home/insasse/.composer/vendor/drush/drush/includes/command.inc(422): drush_pm_enable('recipe_submit')
#9 /home/insasse/.composer/vendor/drush/drush/includes/command.inc(231): _drush_invoke_hooks(Array, Array)
#10 /home/insasse/.composer/vendor/drush/drush/includes/command.inc(199): drush_command('recipe_submit')
#11 /home/insasse/.composer/vendor/drush/drush/lib/Drush/Boot/BaseBoot.php(67): drush_dispatch(Array)
#12 /home/insasse/.composer/vendor/drush/drush/includes/preflight.inc(66): Drush\Boot\BaseBoot-&gt;bootstrap_and_dispatch()
#13 /home/insasse/.composer/vendor/drush/drush/drush.php(12): drush_main()
#14 {main}


What am I doing wrong?
Try replacing 'primary_key' with 'primary key'