最近在做软件,数据库用的是MySql+EF,打算把遇到的问题记一记
1.安装EF什么的应该问题不大,最主要app.config要弄好
在nuget里安装 EntityFramework,MySql.Data,MySql.Data.EntityFramework 发现运行还是会报错(内部报错:ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装)。最后发现 app.config 里少了这块。
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.30.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
2. 执行查询 user表 莫名的出现 Invalid column name 'Discriminator' 提示,明明 user表 里面没有 Discriminator 字段,很奇怪。
排查发现: 有个子类 继承了user,该子类不需要映射到数据库的(具体原因自行百度)。
解决方案:在 子类 属性上 加上 [NotMapped] 就好了。
3.MySql数据库 安装 的一些注意事项
下载Mysql解压后,可能没有my.ini,需要自己配置,弄的不好 服务 无法启动
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port=3306
bind-address=0.0.0.0
#设置mysql的安装目录。若报错用反斜杠
basedir=C:\\db\\mysql-8.0.27-winx64
#设置mysql数据库数据存放目录
datadir=C:\\db\\mysql-8.0.27-winx64\\data
#服务端使用的默认字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#设置数据库隔离策略
transaction-isolation=READ-COMMITTED
#设置缓存池大小,为服务器内存总大小的70%-80%
innodb_buffer_pool_size = 11200M
#开启慢sql监控
slow-query-log=1
slow_query_log_file="C:\\db\\mysql-8.0.27-winx64\\data\\slow.log"
long_query_time=2 #秒
#连接进程释放(时间一致)
wait_timeout=3600#秒
interactive_timeout=3600#秒
#最大连接数
max_connections=2000#小企500,中企1000,大企2000
#设置表名大小写不敏感
lower_case_table_names=1
group_concat_max_len=102400
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
log-bin = mysql-bin
####### InnoDB
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 8
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 32M
innodb_log_file_size = 256M
innodb_log_files_in_group = 4
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_print_all_deadlocks = 1
#innodb_force_recovery=1
命令
初始化
A.mysqld --initialize
找密码
data目录下生的文件有一个.err文件
B.mysqld --initialize-insecure --user=mysql 这个无密码感觉方便些
运行服务
mysqld --remove --卸载
mysqld --install --安装
net start mysql --启动
登录,无密码的直接回车,有的话得输入
mysql -u root -p
修改密码
alter user 'root'@'localhost' identified by 'xx#123';
flush privileges;
如果是服务器要开放远程连接,则需要开放端口,ip,权限什么的
1.修改账号权限
update user set host = '%' where user ='root';
flush privileges;
2.防火墙入站规则 开放 3306端口
3.云服务器控制台 开放 端口白名单
如果 启动服务报错,可能 配置文件路径或者哪里弄得不对
如果是报 193 错误,则 mysql bin目录下有个 mysqld 的 0kb 文件需要删掉
未完待续。

本文分享了在软件开发过程中使用MySql与Entity Framework集成的经验,包括解决配置问题、查询异常及数据库安装注意事项等。
387

被折叠的 条评论
为什么被折叠?



