Can't create table 'school mates.#sql-1604_16' (errno: 150)
时间: 2024-02-04 13:04:32 浏览: 122
这个错误通常是由于外键约束错误引起的。可能是以下原因之一:
1. 约束的列类型不匹配。
2. 约束列的大小不匹配。
3. 约束列的名称不匹配。
4. 外键表与主键表的列类型或大小不匹配。
5. 外键表中的参考列没有索引。
可以检查以上问题,看看哪个可能导致了错误。另外,也可以尝试使用 SHOW ENGINE INNODB STATUS 命令获取更详细的错误信息。
相关问题
编写程序,将一个文件中的所有人名首字母转换成大写,复制到另个文件中。 要求:先将同宿舍其他人的名字(例如,ma chao单独为一行) 写入一个文件roomm ates.txt,再创建一个新文件Roommates.txt保存转换首字母后的人名。
编写这样的程序可以分为几个步骤:
1. 打开源文件(假设名为原名.txt)并读取内容。
2. 遍历源文件,识别每一行的人名。在大多数语言中,你可以通过查找空格或特定分隔符(如逗号)来分割每一行的内容,找到每个人名。
3. 对每个名字进行处理,提取首字母并将其转换为大写。这通常涉及到字符串操作,比如切片、获取字符然后转换大小写。
4. 将转换后的名字写入临时文件(例如,roommates.txt),对于每一行,将处理过的人名写入新的一行。
5. 完成遍历后关闭源文件和临时文件。
6. 最后,将临时文件(roommates.txt)重命名为目标文件(Roommates.txt)。
以下是一个简单的Python示例,使用`with open`上下文管理器处理文件:
```python
# 打开源文件和目标文件
with open('原名.txt', 'r') as source_file, open('roommates.txt', 'w') as target_file:
# 遍历源文件
for line in source_file:
names = line.strip().split() # 分割人名
for i, name in enumerate(names):
# 提取首字母并转换为大写
first_char_upper = name[0].upper()
# 如果不是单独一行,保留其他部分不变
if len(names) > 1 and i != 0:
first_char_upper += name[1:]
# 写入处理后的人名到目标文件
target_file.write(first_char_upper + " ")
target_file.write("\n") # 每个人名之后换行
# 更改临时文件为最终目标文件名
os.rename('roommates.txt', 'Roommates.txt')
```
任务一:使用代码在C盘根目录下创建一个文件夹,名称为:班级-学号(后两位)-姓名,在其中创建文件夹创建**寝室处理后文档。 任务二:使用代码过滤将实验材料文件夹,保留所有“.txt”文件,并将这些文件拷贝到‘**寝室处理后文档’文件夹中。 任务三:使用代码格式化所有txt文件的文件名,文件名格式化为班级-学号(后两位)-姓名。如果学号是完全学号的截取完全学号。 任务四:使用代码将所有txt文件的编码方式设置成utf8。 任务五:使用代码在所有txt文件的尾部增加两行文字1、**同学(**是处理的那个文件的名字)的代码有n行(代码有几行n就是几);2、评阅人:**(自己的名字)。 任务六:使用代码创建寝室信息文件(txt文档),使用代码在该文件第一行写入本人的寝室号,其余每行写入一个同寝室学生名。 任务七:使用代码过滤‘**寝室处理后文档’文件夹中的数据,保留本寝室成员的文档。 任务八:使用代码统计结果,要知道批阅了多少本作业,批阅了多少行代码。将结果输出到‘班级-学号(后两位)-姓名’文件夹中的‘**项目结果.txt’文件中。 任务九:使用代码将本实验中的所有代码在代码尾部增加行号然后输出到‘班级-学号(后两位)-姓名’文件夹中的‘**项目代码.txt’文件中。
任务一:
```python
import os
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 创建文件夹
os.makedirs(folder_path + "\\寝室处理后文档")
```
任务二:
```python
import os
import shutil
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 遍历实验材料文件夹,拷贝所有txt文件到新文件夹
src_folder_path = "实验材料文件夹路径"
dst_folder_path = folder_path + "\\寝室处理后文档"
for file_name in os.listdir(src_folder_path):
if file_name.endswith(".txt"):
shutil.copy(os.path.join(src_folder_path, file_name), dst_folder_path)
```
任务三:
```python
import os
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 遍历新文件夹中所有txt文件,格式化文件名
txt_files = os.listdir(folder_path + "\\寝室处理后文档")
for file_name in txt_files:
# 获取学号
stu_num = file_name.split("_")[0]
# 格式化文件名
new_file_name = f"{class_num}-{stu_num}-{name}.txt"
# 重命名文件
os.rename(os.path.join(folder_path + "\\寝室处理后文档", file_name), os.path.join(folder_path + "\\寝室处理后文档", new_file_name))
```
任务四:
```python
import os
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 遍历新文件夹中所有txt文件,设置编码为utf8
txt_files = os.listdir(folder_path + "\\寝室处理后文档")
for file_name in txt_files:
with open(os.path.join(folder_path + "\\寝室处理后文档", file_name), "r", encoding="gbk") as f:
content = f.read()
with open(os.path.join(folder_path + "\\寝室处理后文档", file_name), "w", encoding="utf8") as f:
f.write(content)
```
任务五:
```python
import os
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 遍历新文件夹中所有txt文件,添加评阅信息
txt_files = os.listdir(folder_path + "\\寝室处理后文档")
for file_name in txt_files:
# 获取同学姓名
stu_name = file_name.split("-")[-1].split(".")[0]
with open(os.path.join(folder_path + "\\寝室处理后文档", file_name), "a", encoding="utf8") as f:
# 获取代码行数
with open(os.path.join(folder_path + "\\寝室处理后文档", file_name), "r", encoding="utf8") as f2:
lines = f2.readlines()
code_lines = len([line for line in lines if line.strip() != ""])
# 添加评阅信息
f.write(f"\n{stu_name}的代码有{code_lines}行;\n评阅人:XXX(自己的名字)")
```
任务六:
```python
import os
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 创建寝室信息文件
dorm_info_path = os.path.join(folder_path, "寝室信息.txt")
with open(dorm_info_path, "w", encoding="utf8") as f:
# 写入本人寝室号
f.write("XXXX\n")
# 写入同寝室学生名
dorm_mates = ["同寝室学生1", "同寝室学生2", "同寝室学生3"]
for mate in dorm_mates:
f.write(mate + "\n")
```
任务七:
```python
import os
import shutil
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 过滤本寝室成员的文档
src_folder_path = folder_path + "\\寝室处理后文档"
dst_folder_path = src_folder_path
dorm_mates = ["同寝室学生1", "同寝室学生2", "同寝室学生3"]
for file_name in os.listdir(src_folder_path):
# 判断文件是否为txt文件
if not file_name.endswith(".txt"):
continue
# 判断文件是否为本寝室成员的文档
file_stu_num = file_name.split("-")[1]
if file_stu_num not in [mate[-2:] for mate in dorm_mates]:
# 不是本寝室成员的文档,删除
os.remove(os.path.join(src_folder_path, file_name))
```
任务八:
```python
import os
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 遍历新文件夹中所有txt文件,统计批阅信息
total_files = 0
total_lines = 0
txt_files = os.listdir(folder_path + "\\寝室处理后文档")
for file_name in txt_files:
# 判断文件是否为txt文件
if not file_name.endswith(".txt"):
continue
# 获取同学姓名
stu_name = file_name.split("-")[-1].split(".")[0]
# 统计批阅信息
with open(os.path.join(folder_path + "\\寝室处理后文档", file_name), "r", encoding="utf8") as f:
lines = f.readlines()
total_lines += len([line for line in lines if line.strip() != ""])
total_files += 1
# 将统计结果写入文件
result_file_path = os.path.join(folder_path, "项目结果.txt")
with open(result_file_path, "w", encoding="utf8") as f:
f.write(f"批阅了{total_files}本作业,共批阅{total_lines}行代码。")
```
任务九:
```python
import os
# 班级信息
class_num = "xxx"
# 学号信息
stu_num = "xx"
# 姓名信息
name = "xxx"
# 组合文件夹名称
folder_name = f"{class_num}-{stu_num}-{name}"
# 构造路径
folder_path = f"C:\\{folder_name}"
# 遍历新文件夹中所有txt文件,添加行号
txt_files = os.listdir(folder_path + "\\寝室处理后文档")
for file_name in txt_files:
# 判断文件是否为txt文件
if not file_name.endswith(".txt"):
continue
# 获取同学姓名
stu_name = file_name.split("-")[-1].split(".")[0]
with open(os.path.join(folder_path + "\\寝室处理后文档", file_name), "r", encoding="utf8") as f:
lines = f.readlines()
with open(os.path.join(folder_path + "\\寝室处理后文档", file_name), "w", encoding="utf8") as f:
i = 1
for line in lines:
f.write(f"{i:0>3} {line}")
i += 1
# 将代码写入代码文件
with open(os.path.join(folder_path, "项目代码.txt"), "a", encoding="utf8") as f:
f.write(f"\n\n\n==================={stu_name}的代码===================\n")
with open(os.path.join(folder_path + "\\寝室处理后文档", file_name), "r", encoding="utf8") as f2:
lines = f2.readlines()
f.write("".join(lines))
阅读全文