MySQL问题

一、外键问题

外键添加错误,导致原因:

  1.   两个字段的类型或者大小不严格匹配。
    例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.verysimple.com/blog/?p=57
  2. 试图设置外键的字段没有建立起索引,或者不是一个primary key(主键)
    如果其中一个不是primary key的话,你必须先为它创建一个索引。
  3. 其中一个或者两个表是MyISAM引擎的表
    若想要使用外键约束,表必须是InnoDB引擎(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键,只会建立索引)你需要检查表的引擎类型。
  4. 外键的名字不能重复。
    你应该检查你的数据库以确保外健名字是唯一的,或者你在键名后面加上几个随机的字符以测试是否是这个原因。
  5.  你可能设置了ON DELETE SET NULL,但是相关的键的字段又设置成了NOTS NULL值。
    你可能通过修改cascade的属性值或者把字段属性设置成allow null来解决。
  6. 请确定你的Charset和Collate选项在表级和字段级上的一致。
  7. 可能设置为外键设置了一个默认值,如default=0。
  8. 语法错误

二、编码问题

可能的错误:

  1. 默认编码方式可能时latin1,修改 my.ini 文件改变编码方式为 gbk 或 utf8 .修改之后再创建表默认按修改后的编码方式
  2. 要修改已创建的表的编码方式需要用
    //修改表属性
    alter table  table_name modify name varchar(30) character set gbk;
    //修改整表
    ALTER TABLE OLD_TABLE CONVERT TO CHARACTER SET charset_name [COLLATE collation_name];

     

三、角色和用户问题

关于用户的操作:

查看所有用户

//创建用户并赋予相应权限
grant select 
on database_name.* to 'user_name'@'localhost'
identified by 'password'; 

//查询所有用户
select user from mysql.user;

//删除用户
use mysql;
drop user 'user_name';

//修改制定用户密码
update mysql.user set 
password=password('new_password') 
where user="user_name" and Host="localhost";

2.关于角色,MYSQL8版本才能使用

//创建角色
create role role_name;

//赋予角色查询权限
grant select
on table table_name
to role_name
with admin option;

//收回权限
revoke select
on table table_name
from role_name;

//将角色授予其他角色
grant R1 
to R2
with admin option;

//删除角色
drop role role_name;

四、电脑中有多个mysql

 在配置各种环境装了很多mysql,要让他们同时工作,需要设置注册表的一些信息。

为了避免端口冲突,要先配置各个mysql的my.ini配置文件。

[client]
port=3306

# The TCP/IP Port the MySQL Server will listen on
port=3306

#Path to installation directory. All paths are usually resolved relative to this.
basedir="D:\php\AppServ/MySQL"


#Path to the database root
datadir="D:\php\AppServ/MySQL/data/"

其他 mysql 的 my.ini 的修改类似,使每个各占用一个端口。basedir 和 datadir 为其对应地址。

在services.msc中生成服务

  • 进入对应的bin文件夹,在bin文件夹下运行命令窗口(Shift+右键),或在cmd中进入相应bin目录。
  • 输入mysqld -install MySQL --defaults-file="D:\php\AppServ/MySQL/my.ini"并回车(MySQL是自己取得服务名字,也可以MySQL2或其他名称;引号中是每个mysql的my.ini对应地址)。
  • 提示:Service successfully installed.表示服务安装成功。
  • 打开注册表regedit,展开HKEY_LOCAL_MACHINE--->SYSTEM--->CurrentControlSet--->services,找到上面安装的MySQL(或自己取得其他名字)服务,修改参数 ImagePath的值:D:\php\AppServ\MySQL\bin\mysqld --defaults-file=D:\php\AppServ\MySQL\my.ini MySQL(划线部分修改为自己电脑上的值)
  • 在services.msc中可以找到并启动相应的服务,可同时运行多个mysql。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值