在使用MySQL的时候,在操作不当时,很容易出现 ERROR 1005 (HY000): Can't create table 这类错误。很多站长朋友可能需要排查很久才会找到问题的原因其实很简单,希望这篇文章可以对站长朋友以及Mysql初学者一点帮助。
MySQL官方提供的问题原因:
在信息中有一组【LATEST FOREIGN KEY ERROR】会有最近错误的详细描述和解决办法。
Cannot find an index in the referenced table where the referenced columns appear as the first columns, or column types in the table and the referenced table do not match for constraint.
(译:不能在“被reference的表”里找到包含“被reference字段”的索引,或者是两个关联字段类型不匹配)
以下介绍两个示例:
示例一:
程序代码
create table booktype
(
btid int(5) unsigned zerofill auto_increment not null primary key,
btname varchar(100) not null unique,
btnote text
);
create table books
(
bid int(5) unsigned zerofill auto_increment not null primary key,
bname char(30) not null,
isbn char(50) not null,
author char(30) not null,
press text,
summary text,
bcount int not null default 0,
btid int,
foreign key(btid) references booktype(btid)
);
出现的报错:
程序代码
ERROR 1005 (HY000): Can't create table '.\bookdata\books.frm' (errno: 150)
主要问题以及解决办法是:
foreign key(btid) references booktype(btid) 中books表的 btid 是int和booktype表中的btid设置的关联字段类型不匹配,books表中btid改正成:btid int(5) unsigned zerofill ,就不会报错了,创建表和修改表地时候常常一步小小就忘记了这个.
示例二:
MySQL里创建外键时(Alter table xxx add constraint fk_xxx foreign key),提示错误,但只提示很简单的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150)。根本起不到解决问题的作用。
drop table if exists products;
create table products(
id int not null auto_increment,
title varchar(100) not null,
description text not null,
image_url varchar(200) not null,
price decimal(10,2) not null,
date_available datetime not null,
primary key(id)
)type=innodb;
drop table if exists line_items;
create table line_items(
id int not null auto_increment,
product_id int not null,
quantity int not null default 0,
unit_price decimal(10,2) not null,
constraint fk_items_product foreign key (product_id) references producets(id),
index(product_id)
primary key(id)
)type=innodb;
出现的报错:
ERROR 1005: Can't create table
主要问题以及解决办法是:
1,MySQL支持外键约束,并提供与其它DB相同的功能,但表类型必须为 InnoDB
2、建外键的表的那个列要加上index
分享到:
相关推荐
标题中的"mysqlerror.mqh"是一个包含错误处理功能的头文件,它是MetaQuotes Language 4 (MQL4)编程语言的一部分。MQL4是一种专为MT4设计的脚本语言,允许开发者创建EAs、指标和脚本来进行交易决策和市场分析。...
在处理MySQL安装错误时,保持耐心和细致非常重要。通过逐一排查上述解决方案,大多数情况下都能成功解决安装过程中的问题,让你的数据库管理系统正常运行。如果问题依旧存在,考虑查阅MySQL官方文档或寻求社区支持,...
you can't run this command now"错误是一个常见的问题,它通常出现在多条语句连续执行时,由于某些原因导致数据连接的状态不一致,使得MySQL无法正确处理后续的命令。这个错误的根源在于MySQL的C API,当执行...
该类提供了丰富的接口来处理数据库连接、查询、错误处理等常见任务。 #### 类的属性 - `$myDbhost`:数据库服务器地址。 - `$myDbuser`:登录数据库的用户名。 - `$myDbwd`:登录数据库的密码。 - `$myDbname`:要...
5. **错误处理**:在代码中加入异常处理,捕获并适当地处理`Mysql::Error: query: not connected`这类错误,例如通过重新连接或者向用户显示友好的错误信息。 在描述中提到了一个博客链接,虽然没有具体的内容,但...
5. 错误处理和关闭连接: 在执行完数据库操作后,记得处理可能出现的错误并关闭连接: ```python try: # Database operations except pymysql.MySQLError as e: print(f"An error occurred: {e}") finally: ...
错误处理与事务管理 在使用PyMySQL时,可能会遇到各种错误,如连接失败、SQL语句错误等。这时可以捕获并处理异常,保证程序的健壮性。同时,由于MySQL支持事务,对于一组数据库操作,我们可以选择开启一个事务,...
8. **错误处理**: - 应始终捕获可能的`_mysql_exceptions.MySQLError`,以处理数据库操作中的错误。 通过这些知识点,我们可以了解到如何在Python环境中使用MySQLclient来管理和操作MySQL数据库,从而实现高效的...
总结来说,`pymysql`是Python连接MySQL数据库的首选库,它提供了全面的功能,包括数据库连接、SQL语句执行、事务处理以及错误处理等,使得Python开发者能够高效地进行MySQL数据库操作。在实际项目中,正确地使用`...
例如,当数据库连接失败或SQL语句执行错误时,应捕获并处理这些异常: ```python try: conn = pymysql.connect(...) except pymysql.MySQLError as e: print(f"Error connecting to MySQL: {e}") else: try: ...
错误处理 在实际使用中,我们还需要处理可能出现的错误,例如连接失败、SQL执行错误等: ```python try: # 连接和操作数据库 except pymysql.MySQLError as e: print(f"发生错误:{e}") finally: # 关闭连接 ...
**PyMySQL:Python3连接MySQL数据库的利器** 在Python编程中,进行数据库操作是一项常见的任务,而MySQL作为广泛使用的开源...在实际开发中,还需要根据具体需求进行错误处理、性能优化等,确保代码的稳定性和高效性。
### 错误处理 在实际操作中,我们需要处理可能遇到的错误: ```python try: # 数据库操作 except pymysql.MySQLError as e: print(f"MySQL 错误: {e}") finally: # 关闭游标和连接 ``` ### 连接池管理 对于...
5. 错误处理与事务: 在执行SQL时,应考虑异常处理和事务管理,确保数据的一致性和完整性: ```python try: cursor.execute(sql) db.commit() except pymysql.MySQLError as e: print(f"Error: {e}") db....
例如,当数据库连接失败或SQL语句执行错误时,可以使用try/except来捕获并处理异常: ```python try: # 执行数据库操作 except pymysql.MySQLError as e: print(f"数据库操作出错: {e}") finally: # 关闭游标和...
except pymysql.MySQLError as e: print(f"数据库错误: {e}") finally: if conn: conn.close() ``` 七、高级功能 PyMySQL还提供了其他高级特性,如连接池管理、支持多线程等。这些功能可以帮助开发者更高效地...
PyMySQL还提供了异常处理机制,确保在发生错误时能妥善处理,避免程序崩溃。例如: ```python try: conn = ... cursor = ... except pymysql.MySQLError as e: print(f"Error: {e}") finally: cursor.close() ...
To log in you must change it using a client that supports expired passwords”这样的错误提示,这表明你的MySQL密码已经过期,需要进行更新才能继续登录数据库。这种情况通常发生在初始化MySQL服务之后,由于未...
在实际应用中,应使用try-except-finally结构来处理可能的错误: ```python try: # 连接和执行SQL操作 except pymysql.MySQLError as e: print(f"MySQL Error: {e}") finally: if conn: cursor.close() conn....
pymysql还提供了异常处理机制,确保在发生错误时能够优雅地处理。例如,使用try/except/finally结构来捕获并处理可能出现的错误: ```python try: # 连接和操作数据库 except pymysql.MySQLError as e: print(f...