首页 > 解决方案 > 如何在原始查询 laravel 中创建表?

问题描述

我正在尝试创建已成功创建的新数据库,并且该数据库中的某些表未创建表。这个查询有什么问题?它说:

Connection.php 第 770 行中的 QueryException:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的“CREATE TABLE activities( idint(10) UNSIGNED NOT NULL,”附近使用正确的语法(SQL:CREATE DATABASE authority_70 CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE activities( idint(10) UNSIGNED NOT NULL, name varchar(150) COLLATE utf8_unicode_ci NOT NULL, created_attimestamp NULL DEFAULT NULL, updated_attimestamp NULL DEFAULT NULL, deleted_attimestamp NULL DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; )

DB::connection('rc')->statement("
    CREATE DATABASE institution_$institutionId CHARACTER SET utf8 COLLATE utf8_general_ci;

    CREATE TABLE `activities` (
      `id` int(10) UNSIGNED NOT NULL,
      `name` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
      `created_at` timestamp NULL DEFAULT NULL,
      `updated_at` timestamp NULL DEFAULT NULL,
      `deleted_at` timestamp NULL DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    ");

标签: mysqllaravellaravel-5

解决方案


NULL在时间戳后移除

   CREATE TABLE `activities` (
      `id` int(10) UNSIGNED NOT NULL,
      `name` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
      `created_at` timestamp DEFAULT NULL,
      `updated_at` timestamp DEFAULT NULL,
      `deleted_at` timestamp DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

推荐阅读