mysql - 创建表失败

标签 mysql

我已经安装了 mySQL Server 并创建了一个名为 ej_instance 的用户,并设置了密码“password”。使用以下命令登录服务器

  mysql -u ej_instance -p;
  -- entered password

ej_instance 只能访问 ejabberd 数据库。所以我执行了如下命令

  use ejabberd;

然后尝试执行如下命令

  SET table_type=InnoDB;

  CREATE TABLE users (
     username varchar(250) PRIMARY KEY,
     password text NOT NULL,
     created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  ) CHARACTER SET utf8;

但它向我抛出错误。以下是错误

  ERROR 1193 (HY000): Unknown system variable 'table_type'
  ERROR 1046 (3D000): No database selected

怎样才能做到这一点?还有什么要改变的吗?

最佳答案

创建表时指定引擎类型,如下所示:

USE ejabberd;

CREATE TABLE users (
     username varchar(250) PRIMARY KEY,
     password text NOT NULL,
     created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) CHARACTER SET utf8 ENGINE = INNODB;

如果仍然显示使用错误,请检查:

  1. 数据库存在
  2. 用户 ej_instance 有权访问数据库并在数据库上创建表

以 root 身份登录:

#check the database exists
SHOW DATABASES LIKE 'ejabberd';

#check user permissions
SHOW GRANTS FOR 'ej_instance'@'localhost';
SHOW GRANTS FOR 'ej_instance'@'%';

如果没有足够的权限:

#grant all permission on the user for the specified database
GRANT ALL ON ejabberd.* TO 'ej_instance'@'localhost';
GRANT ALL ON ejabberd.* TO 'ej_instance'@'%';
FLUSH PRIVILEGES;

关于mysql - 创建表失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21574316/

相关文章:

php - 在三个表上使用 JOIN - MySQL

sql - 根据不同表中的列从 SELECT 中删除行

mysql - 什么实际上被复制到 MySQL 从站?

php - 从下拉选择中显示数据库内容

mysql - 使用复合键进行数据库复制?

php - 从列表元素运行 php

php - 有没有办法使用 Db 实例在 prestashop 中准备 sql 语句?

mysql - 从包含逗号分隔字符串的列中搜索逗号分隔值 mysql

php - 删除不在我的数据库中的文件

mysql - debian 中的 Perl mysql 模块