mysql报错问题解决!!!
1、Multiple primary key defined:已定义多个主键
PRIMARY KEY(图书编号)主键对应的第一行的属性之前把auto该成不自动就报错了
下面是主键的创建方式和常见错误
创建主键可以有两种方式:
1 2 3 4 5 6 | create table 表名( 字段名 类型, 字段名 类型, …… primary key(name) ); |
或者是
1 2 3 4 5 | create table 表名( 字段名 类型 primary key, 字段名 类型, …… ); |
2、Incorrect date value: ‘1996’ for column ‘出版日期’ at row 1
该报错信息出现应该将data的数据形式变成1996-09-23>19960923这样报错就解决了
先看出版日期的数据类型为data所以去找data的数据表达形式
3、Unknown column ‘计算机’ in ‘field list’:字段不存在
最简单的解决办法技术给数据(计算机)加上(‘计算机’)就可以了,在mysql里面字符串需要加‘’单引号
4、Column count doesn’t match value count at row 1:列计数与第1行的值计数不匹配
可能sql语句里面有中文符号导致报错
5、解决在命令行输入 mysql -u root -p 登录mysql报:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)**
这个可能问题是1.mysqld服务没有启动2.无法连接到“本地主机”(10061)上的MySQL服务器,其实这两个问题差不多是一个问题
解决方法:
第一步:
首先以管理员身份启动cmd,要不然服务禁止访问。
第二步:
然后在cmd中输入 mysqld --remove mysql或者mysqld --remove mysql57来移除服务。
不移除服务后面会报拒绝访问。
第三步:
然后进入MySQL安装目录中找到data文件,清空其中全部文件。有一部分是目录是在C:\ProgramFile\MySQL\MySQL Server 8.0\data,(没有data文件自己建一个),data文件夹也有可能在C:\ProgramData\MySQL\MySQL Server 8.0。然后到这里当你去找这个data目录的时候,当年执行完初始化之后你的data目录可能会啥都没有:其他它回到了你的mysql安装目录的data
这个是我的那个data目录是我清空全部文件之后的,然后神奇的事情来了,和第五步一起看一下
编辑
第四步:
注册服务,mysqld -install。
第五步:
开始初始化,mysqld --initialize,然后可以看到****(看到这里,有一部分的同学的data没有任何文件是什么原因呐,就是data文件回到了你的mysql安装目录的data文件,所以找不到初始化之文件的去你的mysql安装目录下找找)data文件夹中文件正在初始化中(正在生成文件中)。
初始化后data目录位置:如下图
第六步:
初始化过程中也会把登录密码初始化,在data文件中找到以.err结尾的文件是mysql的错误日志,打开
2023-01-03T06:24:26.064230Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 3t3d3z-&k1qE
标红的是初始密码记住初始密码
第七步:
mysql -u root -p 后出现Enter password:输入密码,在这里可能会有其他错误:
ERROR 1045 (28000): Access denied for user ‘root@localhost’@‘localhost’ (using password: YES),其实和刚刚开始情况差不多,使用mysqld --start启动MySQL服务器
第八步:
修改密码,在这里我是8.0的,这个地方它会让你先修改密码;
mysql> use mysql
No connection. Trying to reconnect...
Connection id: 18
Current database: *** NONE ***
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; 修改,密码语句
Query OK, 0 rows affected (0.01 sec)
修改完之后就可以正常使用了。
6. Access denied for user 'username'@'localhost' (using password: YES)
这通常是因为输入的用户名或密码不正确。请确保输入的用户名和密码是正确的,并且该用户具有适当的权限。
7. Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
这通常是因为MySQL服务没有启动,可以尝试启动MySQL服务。
8. Duplicate entry 'X' for key 'PRIMARY'
这意味着您正在插入重复的主键值。确保要插入的值在表中唯一。
10. Table does not exist
这表示您正在尝试访问不存在的表格。请确保表名拼写正确并存在于数据库中。
11. Out of memory; restart server and try again (needed X bytes)
这表示MySQL服务器已经用尽了可用的内存。您可以尝试增加MySQL的内存限制或优化查询以减少内存使用量。
12 Lock wait timeout exceeded; try restarting transaction
这通常发生在并发环境下,当一个事务持有锁太久时。您可以尝试减少事务持有锁的时间或增加等待超时时间。
13. MySQL server has gone away
这可能是由于连接超时或者MySQL服务崩溃导致的。您可以尝试增加wait_timeout
和interactive_timeout
参数的值。
14.第一次登录Mysql数据库密码正确登录失败:
- 关闭mysql服务
service mysqld stop
- 找到/etc/my.cnf,在最后一行添加skip-grant-tables(用于免密码登录)
vim /etc/my.cnf
skip-grant-tables
- 重启mysql服务
service mysqld start
- 正常登录,不使用密码,直接回车
mysql -u root
- 刷新权限
flush privileges
- 修改密码
alter user’root’@’%’ IDENTIFIED BY ‘新密码’;
#(mysql8.0以上密码策略限制必须要大小写加数字特殊符号,否则会报错)
- 找到/etc/my.cnf,删除skip-grant-table
- 重启服务
service mysqld restart
正常登录测试mysql -u root -p,输入刚刚修改好的密码
15.Starting MySQL. ERROR! The server quit without updating PID file (/opt/data/mysql.pid).
修改/etc/my.cnf
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
更改
[mysqld_safe]
log-error=/opt/data/mariadb.log
pid-file=/opt/data/mariadb.pid
16、Column count doesn’t match value count at row 1
通常发生在插入数据时,指定的列数量和值的数量不匹配,导致数据库无法将数据正确插入到表中。
下面的 SQL 语句:
INSERT INTO users (user_id, username, email) VALUES (1, 'Alice');
在这个例子中,指定了三个列 user_id
、username
和 email
,但却只提供了两个值 1
和 'Alice'
,缺少了对于 email
列的值,因此出现了列数与值数不匹配的错误。
要解决问题,需要确保在 VALUES
关键字后面提供的值和列的数量匹配。
修改上述 SQL 语句为:
INSERT INTO users (user_id, username, email) VALUES (1, 'Alice', 'alice@example.com');