MariaDB(mysql)中插入中文数据

今天要补交数据库的作业,使用java、MariaDB写一个数据库应用程序。

以前写过类似的程序,也遇到过数据库中文插入问题,当时解决了,但没有记录下来,看来记笔记是非常重要的一件事。

我使用的使用netbeans写这个程序,虽然不喜欢java,但为了拿到成绩,呵呵。

一开始使用的是这样的建表语句

CREATE TABLE Student(
       Sid CHAR(15) NOT NULL PRIMARY KEY,
       Sname CHAR(20) NOT NULL,
       Sage INT NOT NULL,
       Ssex CHAR(6) NOT NULL,
       Sclass CHAR(10) NOT NULL,
       Sdept INT NOT NULL,
       Saddr VARCHAR(30) NOT NULL
)

后来就出现问题了,无法插入中文。错误提示是这样的

google了半天,试了很多方法,还是没能解决。

最后我在命令行中误打误撞输入了一条命令

show create table Student;
Student是我创建的表的名字,后来出现了这个表的定义SQL语句

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQLMariaDB,当执行DELETE语句删除数据时,磁盘空间通常不会立即释放。这是因为MySQL使用了一种称为“Undo Log”的机制来实现事务的回滚和MVCC(多版本并发控制)功能。 当执行DELETE语句时,MySQL会将被删除的数据记录存储在Undo Log,以便在需要回滚事务或提供MVCC功能时使用。这样做的好处是可以保证数据的一致性和并发性。 然而,这也导致了磁盘空间没有立即释放的情况。要释放磁盘空间,可以通过以下几种方式: 1. 执行OPTIMIZE TABLE命令:这个命令会重新组织表的物理存储,包括回收已删除的空间。但是需要注意的是,OPTIMIZE TABLE命令可能会导致表被锁定,并且在大表上执行时可能需要较长时间。 2. 使用TRUNCATE TABLE命令:TRUNCATE TABLE命令会删除表的所有数据,并释放磁盘空间。但是需要注意的是,TRUNCATE TABLE命令是DDL语句,会自动提交事务并且无法回滚。 3. 使用ALTER TABLE命令:通过ALTER TABLE命令重建表,可以释放磁盘空间。例如,可以创建一个新表并将数据插入,然后删除原表。但是需要注意的是,这种方法可能会导致表结构和索引的重新构建,可能会影响性能。 4. 等待自动回收:MySQL会在后台自动回收已删除数据的磁盘空间,这个过程称为垃圾回收。可以通过设置innodb_undo_log_truncate选项来控制垃圾回收的频率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值