首页 > 数据库 >使用FreeSQL走过的坑

使用FreeSQL走过的坑

时间:2023-02-01 09:00:29浏览次数:45  
标签:SQLite FreeSQL 数据库 使用 走过 MySQL 日志 UseAutoSyncStructure

  FreeSQL还挺好用的,后续的新项目,用到数据库的,基本上都改用FreeSQL了。但是在FreeSQL的过程中,不可避免地踩过一些坑,分享出来供大家参考。

  1、慎用UseAutoSyncStructure(true)功能,特别是一些老项目改造,和数据非常重要的项目。

  UseAutoSyncStructure功能非常方便,FreeSQL会根据定义的数据类,自动生成数据库表和数据库字段。但使用不当,可能会造成数据丢失。

  我之前踩过的坑是改成自己写的日志软件时遇到的,因为我的日志内容部分比较长,所有原来用的数据库字段类型是LongText,代码中数据类的字段类型是string。改造过程没去特别定义字段长度。出现的结果是,在MySQL数据库中,FreeSQL默认会把数据类型是string的字段,定义成类似长度256的varchar类型。然后FreeSQL把我原来的LongText类型直接改成了varchar(256),把原来日志内容超出的部分全删除了。相当于我前面写的所有的日志内容都只剩下256个字符了,欲哭无泪。

  解决办法:

  1)不要开启UseAutoSyncStructure自动迁移功能

freeSql = new FreeSql.FreeSqlBuilder()
    .UseConnectionString(type, connectionString)
    .UseLazyLoading(true)
    .UseMonitorCommand(cmd => Debug.WriteLine(cmd.CommandText))
    //.UseAutoSyncStructure(true)
    .Build();

  2)文本内容超长的字段,要定义一下字段长度,我一般直接把StringLength定义成-2,相当于就是LongText

[Column(IsNullable = false, StringLength = -2)]
public string TaskContent { get; set; }

 

  2、不同数据库切换时要小心。

  FreeSQL封装得比较好,可以非常方便地匹配不同的数据库类型,所以我现在的小工具基本上都会同地支持MySQL和SQLite,同时支持切换数据库。

  前面我弄的小工具ToDoManager,默认使用SQLite,但我平常都是使用MySQL。有一次,在调试过程中,在软件运行过程中,把数据库从SQLite切换到MySQL,但切换完以后没有从新数据库中重新加载数据。然后这个小工具,前面为了方便加了退出时自动保存的功能。导致的后果是,SQLite的空数据把MySQL里的有效数据全替换了,导致我MySQL里的数据基本上全丢了。

标签:SQLite,FreeSQL,数据库,使用,走过,MySQL,日志,UseAutoSyncStructure
From: https://www.cnblogs.com/wzwyc/p/17081378.html

相关文章

  • RabbitMq使用中常见错误--python版
    用python的pika库错误集 一、pika.exceptions.ProbableAuthenticationError:ConnectionClosedByBroker:(403)‘ACCESS_REFUSED-Loginwasrefusedusingauthentica......
  • react-vant 使用
    react-vant是vantUI针对react的UI版本,可以帮助我们搭建react移动端页面安装:npminstallreact-vantlist组件使用import{List}from'react-vant';例子/*eslint-d......
  • 第六十二章 使用 SNMP 监控 IRIS
    第六十二章使用SNMP监控IRIS本附录描述了IRIS数据平台和SNMP(简单网络管理协议)之间的接口。SNMP是一种通信协议,作为一种管理TCP/IP网络(包括单个网络设备和一般......
  • .NET7 中使用MailKit
    MailKit正式替换了.NET的SmtpClient可参考:SmtpClient类(System.Net.Mail)|MicrosoftLearnstaticvoidSendMail(stringsubject,stringhtml)......
  • Go使用post方法将json数据传给一个url(后端接口)
       最近做的一个项目是采用前后端分离模式写前端,后端是fabric区块链,提供接口,需要使用post方法进行访问。如上一章注册用户,就是需要把用户名、账户信息转换成json形式......
  • await使用不当引发的异常
    1、异步方法不await引发异常向文件写入大量内容:因为WriteAllTextAsync是独占式写入,又不等待,都没写完就到下一行读,肯定占用进程报错!2、await等待了一个非异步的方法......
  • nginx 重写整个 url,结合使用 proxy_pass 和 rewrite
    首先讲下需求背景需要将相同url不同参数的地址转发到服务器上不同的地址举例:example1.com/api.php?act=order->example2.com/api/pay/orderexample1.com/api.php?ac......
  • 【Zookeeper】(三)部署与使用、服务器节点动态上下线案例分析
    目录......
  • R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据
    全文链接:http://tecdat.cn/?p=22521最近我们被客户要求撰写关于ARIMAX的研究报告,包括一些图形和统计输出。在大数据的趋势下,我们经常需要做预测性分析来帮助我们做决定。......
  • 使用消息队列必须考虑的问题
    总结:为什么使用消息队列?异步、解耦、削峰。消息队列有什么缺点?可用性降低、系统复杂度提高、一致性问题。如何保证消息队列的可用性?镜像集群模式(RabbitMQ),主从......