我的MYSQL是5.0版本的,运行总是会报错,请问如何解决?

我的MYSQL是5.0版本的,运行总是会报错,请问如何解决?,第1张

1、可能是/opt/mysql-master/data/数据目录mysql用户没有权限(修改数据目录的权限)解决方法 :给予权限,执行 "chown -R mysql.mysql /opt/mysql-master/data" 然后重新启动mysqld2、可能进程里已经存在mysql进程解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。解决方法:去mysql的二进制日志目录看看,如果存在mysql-binlog.index,就赶快把它删除掉吧4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]下有没有指定数据目录(datadir)。解决方法:请在[mysqld]下设置这一行:datadir = /opt/mysql-master/data5、skip-federated字段问题解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。6、错误日志目录不存在解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限7、selinux惹的祸,如果是centos系统,默认会开启selinux解决方法:先临时改为警告模式:[root@www php]# setenforce 0然后打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled8、可以试着把mysql.cnf默认文件开启,排查是不是配置文件的错误。常见配置错误有:查看配置文件/etc/my.cnf里有没有innodb_buffer_pool_size这个参数innodb_buffer_pool_size:主要作用是缓存innodb表的索引,数据,插入数据时的缓冲;默认值:128M;专用mysql服务器设置此值的大小: 系统内存的70%-80%最佳。如果你的系统内存不大,查看这个参数,把它的值设置小一点吧温馨提示:记得开启mysql错误日志,方便自己排错。vim /etc/my.cnf 各位可以根据自己的my.cnf文件编辑[mysql_safe]log-error = /data/mysql-master/logs/error.log

我观察到你的   emp  表的  username  列,  已经是   有  UNI   的  KEY 了

也就是那个  emp  表的  username  是唯一的了。

因此, 理论上

foreign key(username) references emp(username),

这个应该没有问题。

但是那个

foreign key (name) references emp (name)

由于   emp  表的  name  列,   是允许有重复行的。

因此你无法创建外键。

下面就是一个   失败的例子代码, 你可以参考一下

-- 创建测试主表.  无主键.

CREATE TABLE test_main2 (

  id      INT   NOT  NULL,

  value   VARCHAR(10)

)

-- 创建测试子表. 

CREATE TABLE test_sub2 (

  id      INT   NOT  NULL,

  main_id INT,

  value   VARCHAR(10),

  PRIMARY KEY(id)  

)

-- 插入测试主表数据.

INSERT INTO test_main2(id, value) VALUES (1, 'ONE')

INSERT INTO test_main2(id, value) VALUES (2, 'TWO')

-- 插入测试子表数据.

INSERT INTO test_sub2(id, main_id, value) VALUES (1, 1, 'ONEONE')

INSERT INTO test_sub2(id, main_id, value) VALUES (2, 2, 'TWOTWO') mysql> ALTER TABLE test_sub2

    ->    ADD CONSTRAINT main_id_cons2

    ->    FOREIGN KEY (main_id)

    ->    REFERENCES  test_main2(id)

ERROR 1005 (HY000): Can't create table 'test.#sql-608_1' (errno: 150)

默认情况下,无法创建外键

需要创建 unique 约束

mysql> ALTER TABLE test_main2

    ->   CHANGE COLUMN id id INT UNIQUE

Query OK, 2 rows affected (0.17 sec)

Records: 2  Duplicates: 0  Warnings: 0

unique 约束创建完毕后,外键创建成功。

mysql> ALTER TABLE test_sub2

    ->    ADD CONSTRAINT main_id_cons2

    ->    FOREIGN KEY (main_id)

    ->    REFERENCES  test_main2(id)

Query OK, 2 rows affected (0.14 sec)

Records: 2  Duplicates: 0  Warnings: 0


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7680131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存